Použití animací tvarů v prezentacích s Pythonem
Úvod
Animace jsou vizuální efekty, které lze použít na texty, obrázky, tvary nebo grafy. Dodávají život prezentacím nebo jejich částem.
Proč používat animace v prezentacích?
Použitím animací můžete
- řídit tok informací
- zdůraznit důležité body
- zvýšit zájem nebo zapojení publika
- usnadnit čtení, vstřebání nebo zpracování obsahu
- upoutat pozornost čtenářů nebo diváků na důležité části v prezentaci
PowerPoint nabízí mnoho možností a nástrojů pro animace a animační efekty v kategoriích vstup, odchod, zdůraznění a cesty pohybu.
Animace v Aspose.Slides
- Aspose.Slides poskytuje třídy a typy, které potřebujete pro práci s animacemi v rámci jmenného prostoru Aspose.Slides.Animation,
- Aspose.Slides poskytuje více než 150 animačních efektů v rámci výčtu EffectType. Tyto efekty jsou v podstatě stejné (nebo ekvivalentní) jako efekty používané v PowerPointu.
Použití animace na TextBox
Aspose.Slides pro Python prostřednictvím .NET vám umožňuje aplikovat animaci na text ve tvaru.
- Vytvořte instanci třídy Presentation.
- Získejte referenci na snímek pomocí jeho indexu.
- Přidejte
rectangleIAutoShape. - Přidejte text do
IAutoShape.TextFrame. - Získejte hlavní sekvenci efektů.
- Přidejte animační efekt k IAutoShape.
- Nastavte vlastnost
TextAnimation.BuildTypena hodnotu z výčtuBuildType. - Uložte prezentaci na disk jako soubor PPTX.
Tento Python kód vám ukazuje, jak aplikovat efekt Fade na AutoShape a nastavit animaci textu na hodnotu By 1st Level Paragraphs:
import aspose.slides as slides
# Vytvoří instanci třídy prezentace, která představuje soubor prezentace.
with slides.Presentation() as pres:
sld = pres.slides[0]
# Přidá nový AutoShape s textem
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"
# Získá hlavní sekvenci snímku.
sequence = sld.timeline.main_sequence
# Přidá efekt rozplynutí (Fade) k tvaru
effect = sequence.add_effect(autoShape, slides.animation.EffectType.FADE, slides.animation.EffectSubtype.NONE, slides.animation.EffectTriggerType.ON_CLICK)
# Animuje text tvaru po odstavcích prvního úrovně
effect.text_animation.build_type = slides.animation.BuildType.BY_LEVEL_PARAGRAPHS1
# Uloží soubor PPTX na disk
pres.save("AnimText_out.pptx", slides.export.SaveFormat.PPTX)
Použití animace na PictureFrame
- Vytvořte instanci třídy Presentation.
- Získejte referenci na snímek pomocí jeho indexu.
- Přidejte nebo získejte PictureFrame na snímku.
- Získejte hlavní sekvenci efektů.
- Přidejte animační efekt k PictureFrame.
- Uložte prezentaci na disk jako soubor PPTX.
Tento Python kód vám ukazuje, jak aplikovat efekt Fly na rámeček obrázku:
import aspose.slides as slides
import aspose.pydrawing as draw
# Vytvoří instanci třídy prezentace, která představuje soubor prezentace.
with slides.Presentation() as pres:
# Načte obrázek, který bude přidán do kolekce obrázků prezentace
img = draw.Bitmap("aspose-logo.jpg")
image = pres.images.add_image(img)
# Přidá rámeček obrázku na snímek
picFrame = pres.slides[0].shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 50, 50, 100, 100, image)
# Získá hlavní sekvenci snímku.
sequence = pres.slides[0].timeline.main_sequence
# Přidá efekt animace Let zleva k rámečku obrázku
effect = sequence.add_effect(picFrame, slides.animation.EffectType.FLY,
slides.animation.EffectSubtype.LEFT,
slides.animation.EffectTriggerType.ON_CLICK)
# Uloží soubor PPTX na disk
pres.save("AnimImage_out.pptx", slides.export.SaveFormat.PPTX)
Použití animace na tvar
- Vytvořte instanci třídy Presentation.
- Získejte referenci na snímek pomocí jeho indexu.
- Přidejte
rectangleIAutoShape. - Přidejte
BevelIAutoShape (když je tento objekt kliknut, animace se spustí). - Vytvořte sekvenci efektů na tvaru bevel.
- Vytvořte vlastní
UserPath. - Přidejte příkazy pro přesun na
UserPath. - Uložte prezentaci na disk jako soubor PPTX.
Tento Python kód vám ukazuje, jak aplikovat efekt PathFootball (cesta football) na tvar:
import aspose.slides.animation as anim
import aspose.slides as slides
import aspose.pydrawing as draw
# Vytvoří instanci třídy Presentation, která představuje soubor PPTX
with slides.Presentation() as pres:
sld = pres.slides[0]
# Vytvoří efekt PathFootball pro existující tvar od nuly.
ashp = sld.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 250, 25)
ashp.add_text_frame("Animated TextBox")
# Přidá animační efekt PathFootBall.
pres.slides[0].timeline.main_sequence.add_effect(ashp,
anim.EffectType.PATH_FOOTBALL,
anim.EffectSubtype.NONE,
anim.EffectTriggerType.AFTER_PREVIOUS)
# Vytvoří nějaký typ „tlačítka“.
shapeTrigger = pres.slides[0].shapes.add_auto_shape(slides.ShapeType.BEVEL, 10, 10, 20, 20)
# Vytvoří sekvenci efektů pro tlačítko.
seqInter = pres.slides[0].timeline.interactive_sequences.add(shapeTrigger)
# Vytvoří vlastní uživatelskou cestu. Náš objekt bude přesunut až po kliknutí na tlačítko.
fxUserPath = seqInter.add_effect(ashp,
anim.EffectType.PATH_USER,
anim.EffectSubtype.NONE,
anim.EffectTriggerType.ON_CLICK)
# Přidá příkazy pro pohyb, protože vytvořená cesta je prázdná.
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)
# Zapíše soubor PPTX na disk
pres.save("AnimExample_out.pptx", slides.export.SaveFormat.PPTX)
Získání animačních efektů aplikovaných na tvar
Následující příklady ukazují, jak použít metodu get_effects_by_shape ze třídy Sequence k získání všech animačních efektů aplikovaných na tvar.
Příklad 1: Získání animačních efektů aplikovaných na tvar na normálním snímku
Dříve jste se naučili, jak přidávat animační efekty do tvarů v PowerPoint prezentacích. Následující ukázkový kód ukazuje, jak získat efekty aplikované na první tvar na prvním normálním snímku v prezentaci AnimExample_out.pptx.
import aspose.slides as slides
with slides.Presentation("AnimExample_out.pptx") as presentation:
first_slide = presentation.slides[0]
# Získá hlavní sekvenci animací snímku.
sequence = first_slide.timeline.main_sequence
# Získá první tvar na prvním snímku.
shape = first_slide.shapes[0]
# Získá animační efekty aplikované na tvar.
shape_effects = sequence.get_effects_by_shape(shape)
if len(shape_effects) > 0:
print("The shape", shape.name, "has", len(shape_effects), "animation effects.")
Příklad 2: Získání všech animačních efektů, včetně těch zděděných z placeholderů
Pokud má tvar na normálním snímku placeholdery, které jsou na rozvržení snímku a/nebo hlavním snímku, a k těmto placeholderům byly přidány animační efekty, pak budou během prezentace přehrány všechny efekty tvaru, včetně těch zděděných z placeholderů.
Předpokládejme, že máme soubor PowerPoint prezentace sample.pptx s jedním snímkem obsahujícím pouze tvar zápatí s textem „Made with Aspose.Slides“ a na tvar byl aplikován efekt Random Bars.

Předpokládejme také, že na placeholder zápatí na layout snímku je aplikován efekt Split.

A nakonec je na placeholder zápatí na master snímku aplikován efekt Fly In.

Následující ukázkový kód ukazuje, jak použít metodu get_base_placeholder ze Shape třídy k přístupu k placeholderům tvaru a získání animačních efektů aplikovaných na tvar zápatí, včetně těch zděděných z placeholderů umístěných na rozvržení a hlavním snímku.
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]
# Získá animační efekty tvaru na normálním snímku.
shape = slide.shapes[0]
shape_effects = slide.timeline.main_sequence.get_effects_by_shape(shape)
# Získá animační efekty placeholderu na snímku rozvržení.
layout_shape = shape.get_base_placeholder()
layout_shape_effects = slide.layout_slide.timeline.main_sequence.get_effects_by_shape(layout_shape)
# Získá animační efekty placeholderu na hlavním snímku.
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)
Výstup:
Main sequence of shape effects:
FLY BOTTOM
SPLIT VERTICAL_IN
RANDOM_BARS HORIZONTAL
Změna časových vlastností animačního efektu
Aspose.Slides pro Python prostřednictvím .NET vám umožňuje změnit časové vlastnosti animačního efektu.
Toto je panel časování animace v Microsoft PowerPoint:

Tyto jsou odpovídající vztahy mezi PowerPoint Timing a Effect.Timing vlastnostmi:
- Rozbalovací seznam Start v PowerPoint Timing odpovídá vlastnosti Effect.Timing.TriggerType.
- Duration v PowerPoint Timing odpovídá vlastnosti
Effect.Timing.Duration. Délka animace (v sekundách) je celkový čas, který trvá, než animace dokončí jeden cyklus. - Delay v PowerPoint Timing odpovídá vlastnosti
Effect.Timing.TriggerDelayTime.
Takto změníte vlastnosti časování efektu:
- Apply nebo získejte animační efekt.
- Nastavte nové hodnoty pro vlastnosti
Effect.Timing, které potřebujete. - Uložte upravený soubor PPTX.
import aspose.slides as slides
# Vytvoří instanci třídy prezentace, která představuje soubor prezentace.
with slides.Presentation("AnimExample_out.pptx") as pres:
# Získá hlavní sekvenci snímku.
sequence = pres.slides[0].timeline.main_sequence
# Získá první efekt hlavní sekvence.
effect = sequence[0]
# Změní TriggerType efektu na spuštění po kliknutí
effect.timing.trigger_type = slides.animation.EffectTriggerType.ON_CLICK
# Změní Duration efektu
effect.timing.duration = 3
# Změní TriggerDelayTime efektu
effect.timing.trigger_delay_time = 0.5
# Uloží soubor PPTX na disk
pres.save("AnimExample_changed.pptx", slides.export.SaveFormat.PPTX)
Zvuk animačního efektu
Aspose.Slides poskytuje následující vlastnosti, které vám umožňují pracovat se zvuky v animačních efektech:
soundstop_previous_sound
Přidání zvuku animačního efektu
Tento Python kód vám ukazuje, jak přidat zvuk animačního efektu a zastavit jej, když začne další efekt:
import aspose.slides as slides
with Presentation("AnimExample_out.pptx") as pres:
# Přidá zvuk do audio kolekce prezentace
effect_sound = pres.audios.add_audio(open("sampleaudio.wav", "rb").read())
first_slide = pres.slides[0]
# Získá hlavní sekvenci snímku.
sequence = first_slide.timeline.main_sequence
# Získá první efekt hlavní sekvence
first_effect = sequence[0]
# Zkontroluje, zda efekt nemá zvuk ("No Sound")
if not first_effect.stop_previous_sound and first_effect.sound is None:
# Přidá zvuk k prvnímu efektu
first_effect.sound = effect_sound
# Získá první interaktivní sekvenci snímku.
interactive_sequence = first_slide.timeline.interactive_sequences[0]
# Nastaví příznak „Stop previous sound“ pro efekt
interactive_sequence[0].stop_previous_sound = True
# Zapíše soubor PPTX na disk
pres.save("AnimExample_Sound_out.pptx", slides.export.SaveFormat.PPTX)
Extrahování zvuku animačního efektu
- Vytvořte instanci třídy Presentation.
- Získejte referenci na snímek pomocí jeho indexu.
- Získejte hlavní sekvenci efektů.
- Extrahujte
soundvložený do každého animačního efektu.
Tento Python kód vám ukazuje, jak extrahovat zvuk vložený do animačního efektu:
import aspose.slides as slides
# Vytvoří instanci třídy prezentace, která představuje soubor prezentace.
with slides.Presentation("EffectSound.pptx") as presentation:
slide = presentation.slides[0]
# Získá hlavní sekvenci snímku.
sequence = slide.timeline.main_sequence
for effect in sequence:
if effect.sound is None:
continue
# Extrahuje zvuk efektu do pole bajtů
audio = effect.sound.binary_data
Po animaci
Aspose.Slides pro .NET vám umožňuje změnit vlastnost After animation animačního efektu.
Toto je panel animačního efektu a rozšířené menu v Microsoft PowerPoint:

Rozbalovací seznam PowerPoint Effect After animation odpovídá těmto vlastnostem:
- Vlastnost
after_animation_type, která popisuje typ After animation:- More Colors v PowerPoint odpovídá typu COLOR;
- Don’t Dim v PowerPoint odpovídá typu DO_NOT_DIM (výchozí typ po animaci);
- Hide After Animation v PowerPoint odpovídá typu HIDE_AFTER_ANIMATION;
- Hide on Next Mouse Click v PowerPoint odpovídá typu HIDE_ON_NEXT_MOUSE_CLICK;
- Vlastnost
after_animation_color, která definuje formát barvy po animaci. Tato vlastnost funguje ve spojení s typem COLOR. Pokud typ změníte na jiný, barva po animaci bude vymazána.
Tento Python kód vám ukazuje, jak změnit efekt po animaci:
import aspose.slides as slides
# Vytvoří instanci třídy prezentace, která představuje soubor prezentace
with slides.Presentation("AnimImage_out.pptx") as pres:
first_slide = pres.slides[0]
# Získá první efekt hlavní sekvence
first_effect = first_slide.timeline.main_sequence[0]
# Změní typ po animaci na Color
first_effect.after_animation_type = AfterAnimationType.COLOR
# Nastaví barvu po animaci
first_effect.after_animation_color.color = Color.alice_blue
# Zapíše soubor PPTX na disk
pres.save("AnimImage_AfterAnimation.pptx", slides.export.SaveFormat.PPTX)
Animovat text
Aspose.Slides poskytuje následující vlastnosti, které vám umožňují pracovat s blokem Animate text animačního efektu:
animate_text_type, která popisuje typ animace textu efektu. Text ve tvaru může být animován:- Vše najednou (ALL_AT_ONCE typ)
- Po slovech (BY_WORD typ)
- Po jednotlivých písmencích (BY_LETTER typ)
delay_between_text_partsnastavuje prodlevu mezi animovanými částmi textu (slovy nebo písmeny). Kladná hodnota určuje procento trvání efektu. Záporná hodnota určuje prodlevu v sekundách.
Takto můžete změnit vlastnosti Effect Animate text:
- Apply nebo získejte animační efekt.
- Nastavte vlastnost
build_typena hodnotu AS_ONE_OBJECT, abyste vypnuli režim animace By Paragraphs. - Nastavte nové hodnoty pro vlastnosti
animate_text_typeadelay_between_text_parts. - Uložte upravený soubor PPTX.
import aspose.slides as slides
with slides.Presentation("AnimTextBox_out.pptx") as pres:
first_slide = pres.slides[0]
# Získá první efekt hlavní sekvence
first_effect = first_slide.timeline.main_sequence[0]
# Změní typ textové animace efektu na "As One Object"
first_effect.text_animation.build_type = slides.animation.BuildType.AS_ONE_OBJECT
# Změní typ animace textu efektu na "By word"
first_effect.animate_text_type = slides.animation.AnimateTextType.BY_WORD
# Nastaví prodlevu mezi slovy na 20% trvání efektu
first_effect.delay_between_text_parts = 20
# Zapíše soubor PPTX na disk
pres.save("AnimTextBox_AnimateText.pptx", slides.export.SaveFormat.PPTX)
Často kladené otázky
Jak mohu zajistit, že animace budou zachovány při publikování prezentace na web?
Export to HTML5 a povolte options zodpovědné za animace shape a transition. Čisté HTML nepřehrává animace snímků, zatímco HTML5 ano.
Jak ovlivní změna z‑orderu (pořadí vrstev) tvarů animaci?
Animace a pořadí kreslení jsou nezávislé: efekt řídí časování a typ zobrazování/skrývání, zatímco z-order určuje, co co překrývá. Viditelný výsledek je definován jejich kombinací. (Jedná se o obecné chování PowerPointu; model effect‑and‑shapes v Aspose.Slides následuje stejnou logiku.)
Existují omezení při konverzi animací do videa pro určité efekty?
Obecně jsou animace podporovány, ale v rarých případech nebo u specifických efektů může dojít k odlišnému vykreslení. Doporučuje se testovat s efekty, které používáte, a s verzí knihovny.