Použití animací tvarů v prezentacích v .NET
Úvod
Animace jsou vizuální efekty, které lze použít na texty, obrázky, tvary nebo grafy. Oživují prezentace nebo jejich součásti.
Proč používat animace v prezentacích?
Pomocí 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
- přitáhnout pozornost čtenářů nebo diváků k důležitým částem v prezentaci
PowerPoint poskytuje 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 nabízí více než 150 animačních efektů v rámci výčtu EffectType. Tyto efekty jsou v podstatě stejné (nebo ekvivalentní) jako ty používané v PowerPointu.
Použití animace na TextBoxu
Aspose.Slides pro .NET vám umožňuje aplikovat animaci na text ve tvaru.
- Vytvořte instanci třídy Presentation .
- Získejte referenci na snímek podle 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.BuildType na hodnotu z výčtu BuildType Enumeration.
- Uložte prezentaci na disk jako soubor PPTX.
Tento C# kód ukazuje, jak aplikovat efekt Fade na AutoShape a nastavit animaci textu na hodnotu By 1st Level Paragraphs:
// Instancuje třídu prezentace, která představuje soubor prezentace.
using (Presentation pres = new Presentation())
{
ISlide sld = pres.Slides[0];
// Přidá nový AutoShape s textem
IAutoShape autoShape = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);
ITextFrame textFrame = autoShape.TextFrame;
textFrame.Text = "First paragraph \nSecond paragraph \n Third paragraph";
// Získá hlavní sekvenci snímku.
ISequence sequence = sld.Timeline.MainSequence;
// Přidá efekt animace Fade do tvaru
IEffect effect = sequence.AddEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);
// Animuje text tvaru podle odstavců první úrovně
effect.TextAnimation.BuildType = BuildType.ByLevelParagraphs1;
// Uloží soubor PPTX na disk
pres.Save(path + "AnimTextBox_out.pptx", SaveFormat.Pptx);
}
Použití animace na PictureFrame
- Vytvořte instanci třídy Presentation .
- Získejte referenci na snímek podle 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 C# kód ukazuje, jak aplikovat efekt Fly na rámeček obrázku:
// Instancuje třídu prezentace, která představuje soubor prezentace.
using (Presentation pres = new Presentation())
{
// Načte obrázek, který bude přidán do kolekce obrázků prezentace
IImage image = Images.FromFile("aspose-logo.jpg");
IPPImage ppImage = pres.Images.AddImage(image);
image.Dispose();
// Přidá rámeček s obrázkem do snímku
IPictureFrame picFrame = pres.Slides[0].Shapes.AddPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, ppImage);
// Získá hlavní sekvenci snímku.
ISequence sequence = pres.Slides[0].Timeline.MainSequence;
// Přidá animační efekt Fly zleva do rámečku obrázku
IEffect effect = sequence.AddEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);
// Uloží soubor PPTX na disk
pres.Save("AnimImage_out.pptx", SaveFormat.Pptx);
}
Použití animace na tvar
- Vytvořte instanci třídy Presentation .
- Získejte referenci na snímek podle jeho indexu.
- Přidejte
rectangleIAutoShape. - Přidejte
BevelIAutoShape (při kliknutí na tento objekt se spuští animace). - Vytvořte sekvenci efektů na tvaru bevel.
- Vytvořte vlastní
UserPath. - Přidejte příkazy pro pohyb k
UserPath. - Uložte prezentaci na disk jako soubor PPTX.
Tento C# kód ukazuje, jak aplikovat efekt PathFootball (cesta football) na tvar:
// Instancuje třídu Presentation, která představuje soubor prezentace.
using (Presentation pres = new Presentation())
{
ISlide sld = pres.Slides[0];
// Vytvoří efekt PathFootball pro existující tvar od začátku.
IAutoShape ashp = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);
ashp.AddTextFrame("Animated TextBox");
// Přidá animační efekt PathFootball.
pres.Slides[0].Timeline.MainSequence.AddEffect(ashp, EffectType.PathFootball,
EffectSubtype.None, EffectTriggerType.AfterPrevious);
// Vytvoří něco jako "tlačítko".
IShape shapeTrigger = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Bevel, 10, 10, 20, 20);
// Vytvoří sekvenci efektů pro tlačítko.
ISequence seqInter = pres.Slides[0].Timeline.InteractiveSequences.Add(shapeTrigger);
// Vytvoří vlastní uživatelskou cestu. Náš objekt se bude pohybovat až po kliknutí na tlačítko.
IEffect fxUserPath = seqInter.AddEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);
// Přidá příkazy pro pohyb, protože vytvořená cesta je prázdná.
IMotionEffect motionBhv = ((IMotionEffect)fxUserPath.Behaviors[0]);
PointF[] pts = new PointF[1];
pts[0] = new PointF(0.076f, 0.59f);
motionBhv.Path.Add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, true);
pts[0] = new PointF(-0.076f, -0.59f);
motionBhv.Path.Add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, false);
motionBhv.Path.Add(MotionCommandPathType.End, null, MotionPathPointsType.Auto, false);
// Zapíše soubor PPTX na disk
pres.Save("AnimExample_out.pptx", SaveFormat.Pptx);
}
Získání animačních efektů aplikovaných na tvar
Následující příklady ukazují, jak použít metodu GetEffectsByShape z rozhraní ISequence 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
V předchozím kapitole jste se naučili, jak přidávat animační efekty do tvarů v prezentacích PowerPoint. Následující ukázkový kód vám ukazuje, jak získat efekty aplikované na první tvar na první normálním snímku v prezentaci AnimExample_out.pptx.
using (Presentation presentation = new Presentation("AnimExample_out.pptx"))
{
ISlide firstSlide = presentation.Slides[0];
// Získá hlavní sekvenci animací snímku.
ISequence sequence = firstSlide.Timeline.MainSequence;
// Získá první tvar na prvním snímku.
IShape shape = firstSlide.Shapes[0];
// Získá animační efekty aplikované na tvar.
IEffect[] shapeEffects = sequence.GetEffectsByShape(shape);
if (shapeEffects.Length > 0)
Console.WriteLine($"The shape {shape.Name} has {shapeEffects.Length} 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 rozložení snímku a/nebo hlavním snímku, a na tyto placeholdery 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ů.
Mějme PowerPoint soubor sample.pptx s jedním snímkem, který obsahuje pouze tvar zápatí s textem „Made with Aspose.Slides“ a na tento tvar je aplikován efekt Random Bars.

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

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 GetBasePlaceholder z rozhraní IShape 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 layout a master snímcích.
using (Presentation presentation = new Presentation("sample.pptx"))
{
ISlide slide = presentation.Slides[0];
// Získá animační efekty tvaru na normálním snímku.
IShape shape = slide.Shapes[0];
IEffect[] shapeEffects = slide.Timeline.MainSequence.GetEffectsByShape(shape);
// Získá animační efekty placeholderu na rozložení snímku.
IShape layoutShape = shape.GetBasePlaceholder();
IEffect[] layoutShapeEffects = slide.LayoutSlide.Timeline.MainSequence.GetEffectsByShape(layoutShape);
// Získá animační efekty placeholderu na hlavním snímku.
IShape masterShape = layoutShape.GetBasePlaceholder();
IEffect[] masterShapeEffects = slide.LayoutSlide.MasterSlide.Timeline.MainSequence.GetEffectsByShape(masterShape);
Console.WriteLine("Main sequence of shape effects:");
PrintEffects(masterShapeEffects);
PrintEffects(layoutShapeEffects);
PrintEffects(shapeEffects);
}
static void PrintEffects(IEnumerable<IEffect> effects)
{
foreach (IEffect effect in effects)
{
Console.WriteLine($"{effect.Type} {effect.Subtype}");
}
}
Output:
Main sequence of shape effects:
Fly Bottom
Split VerticalIn
RandomBars Horizontal
Změna časových vlastností animačního efektu
Aspose.Slides pro .NET vám umožňuje měnit časové vlastnosti animačního efektu.
This is the Animation Timing pane and extended menu in Microsoft PowerPoint:

These are the correspondences between PowerPoint Timing and Effect.Timing properties:
- Rozbalovací seznam Start v PowerPoint Timing odpovídá vlastnosti Effect.Timing.TriggerType.
- PowerPoint Timing Duration odpovídá vlastnosti Effect.Timing.Duration. Délka animace (v sekundách) je celkový čas potřebný k dokončení jednoho cyklu animace.
- PowerPoint Timing Delay odpovídá vlastnosti Effect.Timing.TriggerDelayTime.
- PowerPoint Timing Repeat rozbalovací seznam odpovídá těmto vlastnostem:
- vlastnost Effect.Timing.RepeatCount, která popisuje počet opakování efektu;
- příznak Effect.Timing.RepeatUntilEndSlide, který určuje, zda se efekt opakuje až do konce snímku;
- příznak Effect.Timing.RepeatUntilNextClick, který určuje, zda se efekt opakuje až do dalšího kliknutí.
- Zaškrtávací políčko Rewind when done playing v PowerPoint Timing odpovídá vlastnosti Effect.Timing.Rewind.
Toto je postup, jak změnit časové vlastnosti efektu:
- Apply nebo získejte animační efekt.
- Nastavte nové hodnoty pro vlastnosti Effect.Timing, které potřebujete.
- Uložte upravený soubor PPTX.
Tento C# kód demonstruje operaci:
// Instancuje třídu prezentace, která představuje soubor prezentace.
using (Presentation pres = new Presentation("AnimExample_out.pptx"))
{
// Získá hlavní sekvenci snímku.
ISequence sequence = pres.Slides[0].Timeline.MainSequence;
// Získá první efekt hlavní sekvence.
IEffect effect = sequence[0];
// Změní TriggerType efektu na spuštění po kliknutí
effect.Timing.TriggerType = EffectTriggerType.OnClick;
// Změní délku trvání efektu
effect.Timing.Duration = 3f;
// Změní TriggerDelayTime efektu
effect.Timing.TriggerDelayTime = 0.5f;
// Pokud je hodnota Repeat efektu "none"
if (effect.Timing.RepeatCount == 1f)
{
// Změní Repeat efektu na "Do dalšího kliknutí"
effect.Timing.RepeatUntilNextClick = true;
}
else
{
// Změní Repeat efektu na "Do konce snímku"
effect.Timing.RepeatUntilEndSlide = true;
}
// Zapne funkci Rewind efektu
effect.Timing.Rewind = true;
// Uloží soubor PPTX na disk
pres.Save("AnimExample_changed.pptx", SaveFormat.Pptx);
}
Zvuk animačního efektu
Aspose.Slides poskytuje tyto vlastnosti, které vám umožňují pracovat se zvuky v animačních efektech:
Přidání zvuku animačního efektu
Tento C# kód ukazuje, jak přidat zvuk animačního efektu a zastavit jej, když začne další efekt:
using (Presentation pres = new Presentation("AnimExample_out.pptx"))
{
// Přidá audio do kolekce audia prezentace
IAudio effectSound = pres.Audios.AddAudio(File.ReadAllBytes("sampleaudio.wav"));
ISlide firstSlide = pres.Slides[0];
// Získá hlavní sekvenci snímku.
ISequence sequence = firstSlide.Timeline.MainSequence;
// Získá první efekt hlavní sekvence
IEffect firstEffect = sequence[0];
// Kontroluje, zda efekt nemá zvuk
if (!firstEffect.StopPreviousSound && firstEffect.Sound == null)
{
// Přidá zvuk k prvnímu efektu
firstEffect.Sound = effectSound;
}
// Získá první interaktivní sekvenci snímku.
ISequence interactiveSequence = firstSlide.Timeline.InteractiveSequences[0];
// Nastaví příznak "Stop previous sound" efektu
interactiveSequence[0].StopPreviousSound = true;
// Zapíše soubor PPTX na disk
pres.Save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
}
Extrahování zvuku animačního efektu
- Vytvořte instanci třídy Presentation .
- Získejte referenci na snímek podle jeho indexu.
- Získejte hlavní sekvenci efektů.
- Extrahujte Sound vložený do každého animačního efektu.
Tento C# kód ukazuje, jak extrahovat zvuk vložený v animačním efektu:
// Instancuje třídu prezentace, která představuje soubor prezentace.
using (Presentation presentation = new Presentation("EffectSound.pptx"))
{
ISlide slide = presentation.Slides[0];
// Získá hlavní sekvenci snímku.
ISequence sequence = slide.Timeline.MainSequence;
foreach (IEffect effect in sequence)
{
if (effect.Sound == null)
continue;
// Extrahuje zvuk efektu do pole bajtů
byte[] audio = effect.Sound.BinaryData;
}
}
Po animaci
Aspose.Slides pro .NET vám umožňuje změnit vlastnost After animation animačního efektu.
This is the Animation Effect pane and extended menu in Microsoft PowerPoint:

Rozbalovací seznam After animation v PowerPoint odpovídá těmto vlastnostem:
- vlastnost IEffect.AfterAnimationType popisuje typ After animation :
- PowerPoint More Colors odpovídá typu AfterAnimationType.Color ;
- PowerPoint Don’t Dim odpovídá typu AfterAnimationType.DoNotDim (výchozí typ after animation);
- PowerPoint Hide After Animation odpovídá typu AfterAnimationType.HideAfterAnimation ;
- PowerPoint Hide on Next Mouse Click odpovídá typu AfterAnimationType.HideOnNextMouseClick ;
- vlastnost IEffect.AfterAnimationColor definuje formát barvy po animaci. Tato vlastnost funguje ve spojení s typem AfterAnimationType.Color. Pokud typ změníte na jiný, barva po animaci bude vymazána.
Tento C# kód ukazuje, jak změnit efekt po animaci:
// Instancuje třídu prezentace, která představuje soubor prezentace
using (Presentation pres = new Presentation("AnimImage_out.pptx"))
{
ISlide firstSlide = pres.Slides[0];
// Získá první efekt hlavní sekvence
IEffect firstEffect = firstSlide.Timeline.MainSequence[0];
// Změní typ po animaci na Color
firstEffect.AfterAnimationType = AfterAnimationType.Color;
// Nastaví barvu po animaci
firstEffect.AfterAnimationColor.Color = Color.AliceBlue;
// Zapíše soubor PPTX na disk
pres.Save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
}
Animovat text
Aspose.Slides poskytuje tyto vlastnosti, které vám umožňují pracovat s blokem Animate text animačního efektu:
- IEffect.AnimateTextType popisuje typ animace textu efektu. Text ve tvaru lze animovat:
- Vše najednou (AnimateTextType.AllAtOnce typ)
- Po slovech (AnimateTextType.ByWord typ)
- Po znacích (AnimateTextType.ByLetter typ)
- IEffect.DelayBetweenTextParts nastavuje prodlevu mezi částmi animovaného textu (slovy nebo znaky). Kladná hodnota udává procento trvání efektu. Záporná hodnota udává prodlevu v sekundách.
Toto je způsob, jak můžete změnit vlastnosti Effect Animate text:
- Apply nebo získejte animační efekt.
- Nastavte vlastnost IEffect.TextAnimation.BuildType na hodnotu BuildType.AsOneObject pro vypnutí režimu animace By Paragraphs.
- Nastavte nové hodnoty pro vlastnosti IEffect.AnimateTextType a IEffect.DelayBetweenTextParts.
- Uložte upravený soubor PPTX.
Tento C# kód demonstruje operaci:
// Instancuje třídu prezentace, která představuje soubor prezentace.
using (Presentation pres = new Presentation("AnimTextBox_out.pptx"))
{
ISlide firstSlide = pres.Slides[0];
// Získá první efekt hlavní sekvence
IEffect firstEffect = firstSlide.Timeline.MainSequence[0];
// Změní typ textové animace efektu na "As One Object"
firstEffect.TextAnimation.BuildType = BuildType.AsOneObject;
// Změní typ animace textu efektu na "By word"
firstEffect.AnimateTextType = AnimateTextType.ByWord;
// Nastaví prodlevu mezi slovy na 20% trvání efektu
firstEffect.DelayBetweenTextParts = 20f;
// Zapíše soubor PPTX na disk
pres.Save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
}
Časté dotazy
Jak mohu zajistit, aby animace byly zachovány při publikování prezentace na web?
Export to HTML5 a povolte options zodpovědné za animace shape a transition. Běžné HTML nepřehrává animace snímků, zatímco HTML5 ano.
Jak změna z‑order (pořadí vrstev) tvarů ovlivňuje animaci?
Animace a pořadí kreslení jsou nezávislé: efekt řídí nač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 efektů a tvarů Aspose.Slides následuje stejnou logiku.)
Existují omezení při konverzi animací na video pro některé efekty?
Obecně jsou animace podporovány, ale v ojedinělých případech nebo pro konkrétní efekty může být výstup odlišný. Doporučujeme testovat s efekty, které používáte, a s verzí knihovny.