Aplicar animações de forma em apresentações com Python
Introdução
Animações são efeitos visuais que podem ser aplicados a textos, imagens, formas ou charts. Elas dão vida às apresentações ou aos seus componentes.
Por que usar animações em apresentações?
Usando animações, você pode
- controlar o fluxo de informações
- enfatizar pontos importantes
- aumentar o interesse ou a participação do seu público
- tornar o conteúdo mais fácil de ler, assimilar ou processar
- chamar a atenção dos leitores ou espectadores para partes importantes em uma apresentação
O PowerPoint oferece muitas opções e ferramentas para animações e efeitos de animação nas categorias de entrada, saída, ênfase e caminhos de movimento.
Animações no Aspose.Slides
- Aspose.Slides fornece as classes e tipos necessários para trabalhar com animações no namespace Aspose.Slides.Animation,
- Aspose.Slides oferece mais de 150 efeitos de animação na enumeração EffectType. Esses efeitos são essencialmente os mesmos (ou equivalentes) usados no PowerPoint.
Aplicar animação a TextBox
Aspose.Slides para Python via .NET permite aplicar animação ao texto em uma forma.
- Crie uma instância da classe Presentation.
- Obtenha a referência de um slide através de seu índice.
- Adicione um
rectangleIAutoShape. - Adicione texto ao
IAutoShape.TextFrame. - Recupere a sequência principal de efeitos.
- Adicione um efeito de animação ao IAutoShape.
- Defina a propriedade
TextAnimation.BuildTypepara o valor da enumeraçãoBuildType. - Grave a apresentação no disco como um arquivo PPTX.
Este código Python mostra como aplicar o efeito Fade ao AutoShape e definir a animação de texto para o valor By 1st Level Paragraphs:
import aspose.slides as slides
# Instancia uma classe de apresentação que representa um arquivo de apresentação.
with slides.Presentation() as pres:
sld = pres.slides[0]
# Adiciona uma nova AutoShape com texto
autoShape = sld.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 20, 20, 150, 100)
textFrame = autoShape.text_frame
textFrame.text = "First paragraph \nSecond paragraph \n Third paragraph"
# Obtém a sequência principal do slide.
sequence = sld.timeline.main_sequence
# Adiciona o efeito de animação Fade à forma
effect = sequence.add_effect(autoShape, slides.animation.EffectType.FADE, slides.animation.EffectSubtype.NONE, slides.animation.EffectTriggerType.ON_CLICK)
# Anima o texto da forma por parágrafos de primeiro nível
effect.text_animation.build_type = slides.animation.BuildType.BY_LEVEL_PARAGRAPHS1
# Salva o arquivo PPTX no disco
pres.save("AnimText_out.pptx", slides.export.SaveFormat.PPTX)
Aplicar animação a PictureFrame
- Crie uma instância da classe Presentation.
- Obtenha a referência de um slide através de seu índice.
- Adicione ou obtenha um PictureFrame no slide.
- Recupere a sequência principal de efeitos.
- Adicione um efeito de animação ao PictureFrame.
- Grave a apresentação no disco como um arquivo PPTX.
Este código Python mostra como aplicar o efeito Fly a um frame de imagem:
import aspose.slides as slides
import aspose.pydrawing as draw
# Instancia uma classe de apresentação que representa um arquivo de apresentação.
with slides.Presentation() as pres:
# Carrega a imagem a ser adicionada na coleção de imagens da apresentação
img = draw.Bitmap("aspose-logo.jpg")
image = pres.images.add_image(img)
# Adiciona um frame de imagem ao slide
picFrame = pres.slides[0].shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 50, 50, 100, 100, image)
# Obtém a sequência principal do slide.
sequence = pres.slides[0].timeline.main_sequence
# Adiciona o efeito de animação Fly da esquerda ao frame de imagem
effect = sequence.add_effect(picFrame, slides.animation.EffectType.FLY,
slides.animation.EffectSubtype.LEFT,
slides.animation.EffectTriggerType.ON_CLICK)
# Salva o arquivo PPTX no disco
pres.save("AnimImage_out.pptx", slides.export.SaveFormat.PPTX)
Aplicar animação a Shape
- Crie uma instância da classe Presentation.
- Obtenha a referência de um slide através de seu índice.
- Adicione um
rectangleIAutoShape. - Adicione um
BevelIAutoShape (quando este objeto for clicado, a animação será reproduzida). - Crie uma sequência de efeitos na forma de chanfro.
- Crie um
UserPathpersonalizado. - Adicione comandos para mover ao
UserPath. - Grave a apresentação no disco como um arquivo PPTX.
Este código Python mostra como aplicar o efeito PathFootball (caminho de futebol) a uma forma:
import aspose.slides.animation as anim
import aspose.slides as slides
import aspose.pydrawing as draw
# Instancia uma classe Presentation que representa um arquivo PPTX
with slides.Presentation() as pres:
sld = pres.slides[0]
# Cria o efeito PathFootball para a forma existente do zero.
ashp = sld.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 250, 25)
ashp.add_text_frame("Animated TextBox")
# Adiciona o efeito de animação PathFootBall.
pres.slides[0].timeline.main_sequence.add_effect(ashp,
anim.EffectType.PATH_FOOTBALL,
anim.EffectSubtype.NONE,
anim.EffectTriggerType.AFTER_PREVIOUS)
# Cria algum tipo de "botão".
shapeTrigger = pres.slides[0].shapes.add_auto_shape(slides.ShapeType.BEVEL, 10, 10, 20, 20)
# Cria uma sequência de efeitos para o botão.
seqInter = pres.slides[0].timeline.interactive_sequences.add(shapeTrigger)
# Cria um caminho de usuário personalizado. Nosso objeto será movido somente após o botão ser clicado.
fxUserPath = seqInter.add_effect(ashp,
anim.EffectType.PATH_USER,
anim.EffectSubtype.NONE,
anim.EffectTriggerType.ON_CLICK)
# Adiciona comandos para mover já que o caminho criado está vazio.
motionBhv = fxUserPath.behaviors[0]
pts = [draw.PointF(0.076, 0.59)]
motionBhv.path.add(anim.MotionCommandPathType.LINE_TO, pts, anim.MotionPathPointsType.AUTO, True)
pts = [draw.PointF(-0.076, -0.59)]
motionBhv.path.add(anim.MotionCommandPathType.LINE_TO, pts, anim.MotionPathPointsType.AUTO, False)
motionBhv.path.add(anim.MotionCommandPathType.END, None, anim.MotionPathPointsType.AUTO, False)
# Grava o arquivo PPTX no disco
pres.save("AnimExample_out.pptx", slides.export.SaveFormat.PPTX)
Obter os efeitos de animação aplicados à Shape
Os exemplos a seguir mostram como usar o método get_effects_by_shape da classe Sequence para obter todos os efeitos de animação aplicados a uma forma.
Exemplo 1: Obter efeitos de animação aplicados a uma shape em um slide normal
Anteriormente, você aprendeu como adicionar efeitos de animação a formas em apresentações do PowerPoint. O código de exemplo a seguir mostra como obter os efeitos aplicados à primeira forma no primeiro slide normal da apresentação AnimExample_out.pptx.
import aspose.slides as slides
with slides.Presentation("AnimExample_out.pptx") as presentation:
first_slide = presentation.slides[0]
# Obtém a sequência principal de animação do slide.
sequence = first_slide.timeline.main_sequence
# Obtém a primeira forma no primeiro slide.
shape = first_slide.shapes[0]
# Obtém os efeitos de animação aplicados à forma.
shape_effects = sequence.get_effects_by_shape(shape)
if len(shape_effects) > 0:
print("The shape", shape.name, "has", len(shape_effects), "animation effects.")
Exemplo 2: Obter todos os efeitos de animação, incluindo os herdados de placeholders
Se uma forma em um slide normal possui placeholders que estão no slide de layout e/ou slide mestre, e efeitos de animação foram adicionados a esses placeholders, então todos os efeitos da forma serão reproduzidos durante a apresentação, incluindo os herdados dos placeholders.
Suponha que temos um arquivo de apresentação PowerPoint sample.pptx com um slide contendo apenas uma forma de rodapé com o texto “Made with Aspose.Slides” e o efeito Random Bars foi aplicado à forma.

Vamos também supor que o efeito Split foi aplicado ao placeholder de rodapé no slide de layout.

E finalmente, o efeito Fly In foi aplicado ao placeholder de rodapé no slide mestre.

O código de exemplo a seguir mostra como usar o método get_base_placeholder da classe Shape para acessar os placeholders de forma e obter os efeitos de animação aplicados à forma de rodapé, incluindo os herdados dos placeholders localizados nos slides de layout e mestre.
import aspose.slides as slides
def print_effects(effects):
for effect in effects:
print(effect.type.name, effect.subtype.name)
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
# Obtém os efeitos de animação da forma no slide normal.
shape = slide.shapes[0]
shape_effects = slide.timeline.main_sequence.get_effects_by_shape(shape)
# Obtém os efeitos de animação do placeholder no slide de layout.
layout_shape = shape.get_base_placeholder()
layout_shape_effects = slide.layout_slide.timeline.main_sequence.get_effects_by_shape(layout_shape)
# Obtém os efeitos de animação do placeholder no slide mestre.
master_shape = layout_shape.get_base_placeholder()
master_shape_effects = slide.layout_slide.master_slide.timeline.main_sequence.get_effects_by_shape(master_shape)
print("Main sequence of shape effects:")
print_effects(master_shape_effects)
print_effects(layout_shape_effects)
print_effects(shape_effects)
Output:
Main sequence of shape effects:
FLY BOTTOM
SPLIT VERTICAL_IN
RANDOM_BARS HORIZONTAL
Alterar propriedades de tempo do efeito de animação
Aspose.Slides para Python via .NET permite alterar as propriedades de temporização de um efeito de animação.
Este é o painel de temporização de animação no Microsoft PowerPoint:

Estas são as correspondências entre o temporizador do PowerPoint e as propriedades Effect.Timing:
- A lista suspensa Start do PowerPoint Timing corresponde à propriedade Effect.Timing.TriggerType.
- O Duration do PowerPoint Timing corresponde à propriedade
Effect.Timing.Duration. A duração de uma animação (em segundos) é o tempo total que a animação leva para concluir um ciclo. - O Delay do PowerPoint Timing corresponde à propriedade
Effect.Timing.TriggerDelayTime.
É assim que você altera as propriedades de temporização do efeito:
- Aplicar ou obter o efeito de animação.
- Defina novos valores para as propriedades
Effect.Timingnecessárias. - Salve o arquivo PPTX modificado.
import aspose.slides as slides
# Instancia uma classe de apresentação que representa um arquivo de apresentação.
with slides.Presentation("AnimExample_out.pptx") as pres:
# Obtém a sequência principal do slide.
sequence = pres.slides[0].timeline.main_sequence
# Obtém o primeiro efeito da sequência principal.
effect = sequence[0]
# Altera o TriggerType do efeito para iniciar ao clicar
effect.timing.trigger_type = slides.animation.EffectTriggerType.ON_CLICK
# Altera a Duração do efeito
effect.timing.duration = 3
# Altera o TriggerDelayTime do efeito
effect.timing.trigger_delay_time = 0.5
# Salva o arquivo PPTX no disco
pres.save("AnimExample_changed.pptx", slides.export.SaveFormat.PPTX)
Som do efeito de animação
Aspose.Slides fornece estas propriedades para permitir que você trabalhe com sons em efeitos de animação:
soundstop_previous_sound
Adicionar som ao efeito de animação
Este código Python mostra como adicionar um som ao efeito de animação e pará‑lo quando o próximo efeito começar:
import aspose.slides as slides
with Presentation("AnimExample_out.pptx") as pres:
# Adiciona áudio à coleção de áudios da apresentação
effect_sound = pres.audios.add_audio(open("sampleaudio.wav", "rb").read())
first_slide = pres.slides[0]
# Obtém a sequência principal do slide.
sequence = first_slide.timeline.main_sequence
# Obtém o primeiro efeito da sequência principal
first_effect = sequence[0]
# Verifica se o efeito tem "No Sound"
if not first_effect.stop_previous_sound and first_effect.sound is None:
# Adiciona som ao primeiro efeito
first_effect.sound = effect_sound
# Obtém a primeira sequência interativa do slide.
interactive_sequence = first_slide.timeline.interactive_sequences[0]
# Define o sinalizador "Stop previous sound" do efeito
interactive_sequence[0].stop_previous_sound = True
# Grava o arquivo PPTX no disco
pres.save("AnimExample_Sound_out.pptx", slides.export.SaveFormat.PPTX)
Extrair som do efeito de animação
- Crie uma instância da classe Presentation.
- Obtenha a referência de um slide através de seu índice.
- Recupere a sequência principal de efeitos.
- Extraia o
soundincorporado a cada efeito de animação.
Este código Python mostra como extrair o som incorporado em um efeito de animação:
import aspose.slides as slides
# Instancia uma classe de apresentação que representa um arquivo de apresentação.
with slides.Presentation("EffectSound.pptx") as presentation:
slide = presentation.slides[0]
# Obtém a sequência principal do slide.
sequence = slide.timeline.main_sequence
for effect in sequence:
if effect.sound is None:
continue
# Extrai o som do efeito em array de bytes
audio = effect.sound.binary_data
Após a animação
Aspose.Slides para .NET permite alterar a propriedade After animation de um efeito de animação.
Este é o painel de efeito de animação e o menu estendido no Microsoft PowerPoint:

A lista suspensa After animation do PowerPoint Effect corresponde a estas propriedades:
- Propriedade
after_animation_typeque descreve o tipo de After animation :- PowerPoint More Colors corresponde ao tipo COLOR;
- PowerPoint Don’t Dim corresponde ao tipo DO_NOT_DIM (tipo padrão de after animation);
- PowerPoint Hide After Animation corresponde ao tipo HIDE_AFTER_ANIMATION;
- PowerPoint Hide on Next Mouse Click corresponde ao tipo HIDE_ON_NEXT_MOUSE_CLICK;
- Propriedade
after_animation_colorque define um formato de cor de after animation. Esta propriedade funciona em conjunto com o tipo COLOR. Se você alterar o tipo para outro, a cor de after animation será limpa.
import aspose.slides as slides
# Instancia uma classe de apresentação que representa um arquivo de apresentação
with slides.Presentation("AnimImage_out.pptx") as pres:
first_slide = pres.slides[0]
# Obtém o primeiro efeito da sequência principal
first_effect = first_slide.timeline.main_sequence[0]
# Altera o tipo de after animation para Color
first_effect.after_animation_type = AfterAnimationType.COLOR
# Define a cor de dim do after animation
first_effect.after_animation_color.color = Color.alice_blue
# Grava o arquivo PPTX no disco
pres.save("AnimImage_AfterAnimation.pptx", slides.export.SaveFormat.PPTX)
Animar Texto
Aspose.Slides fornece estas propriedades para permitir que você trabalhe com o bloco Animate text de um efeito de animação:
animate_text_typeque descreve o tipo de animação de texto do efeito. O texto da forma pode ser animado:- Tudo de uma vez (ALL_AT_ONCE tipo)
- Por palavra (BY_WORD tipo)
- Por letra (BY_LETTER tipo)
delay_between_text_partsdefine um atraso entre as partes do texto animado (palavras ou letras). Um valor positivo especifica a porcentagem da duração do efeito. Um valor negativo especifica o atraso em segundos.
É assim que você altera as propriedades de animar texto do efeito:
- Aplicar ou obter o efeito de animação.
- Defina a propriedade
build_typepara o valor AS_ONE_OBJECT para desativar o modo de animação By Paragraphs. - Defina novos valores para as propriedades
animate_text_typeedelay_between_text_parts. - Salve o arquivo PPTX modificado.
import aspose.slides as slides
with slides.Presentation("AnimTextBox_out.pptx") as pres:
first_slide = pres.slides[0]
# Obtém o primeiro efeito da sequência principal
first_effect = first_slide.timeline.main_sequence[0]
# Altera o tipo de animação de texto do efeito para "As One Object"
first_effect.text_animation.build_type = slides.animation.BuildType.AS_ONE_OBJECT
# Altera o tipo de animar texto do efeito para "By word"
first_effect.animate_text_type = slides.animation.AnimateTextType.BY_WORD
# Define o atraso entre palavras para 20% da duração do efeito
first_effect.delay_between_text_parts = 20
# Grava o arquivo PPTX no disco
pres.save("AnimTextBox_AnimateText.pptx", slides.export.SaveFormat.PPTX)
Perguntas frequentes
Como posso garantir que as animações sejam preservadas ao publicar a apresentação na web?
Export to HTML5 e habilite as options responsáveis por animações de shape e transition. HTML simples não reproduz animações de slides, enquanto HTML5 reproduz.
Como a mudança da ordem Z (ordem das camadas) das formas afeta a animação?
A ordem de animação e a ordem de desenho são independentes: um efeito controla o tempo e o tipo de aparição/desaparecimento, enquanto a z-order determina o que cobre o que. O resultado visível é definido pela combinação de ambos. (Este é o comportamento geral do PowerPoint; o modelo de efeitos‑e‑formas do Aspose.Slides segue a mesma lógica.)
Existem limitações ao converter animações para vídeo para certos efeitos?
Em geral, animations are supported, mas casos raros ou efeitos específicos podem ser renderizados de forma diferente. Recomenda‑se testar com os efeitos que você usa e com a versão da biblioteca.