Vormanimaties toepassen in presentaties in .NET
Inleiding
Animaties zijn visuele effecten die kunnen worden toegepast op tekst, afbeeldingen, vormen of grafieken. Ze geven leven aan presentaties of hun onderdelen.
Waarom animaties gebruiken in presentaties?
Met animaties kun je
- de informatiestroom beheersen
- belangrijke punten benadrukken
- de interesse of deelname van je publiek vergroten
- inhoud makkelijker leesbaar, assimileerbaar of verwerkbaar maken
- de aandacht van je lezers of kijkers vestigen op belangrijke delen in een presentatie
PowerPoint biedt veel opties en hulpmiddelen voor animaties en animatie‑effecten binnen de categorieën invoer, verwijdering, accent en bewegingspaden.
Animaties in Aspose.Slides
- Aspose.Slides levert de klassen en types die je nodig hebt om met animaties te werken onder de namespace Aspose.Slides.Animation ,
- Aspose.Slides biedt meer dan 150 animatie‑effecten via de enumeratie EffectType. Deze effecten zijn in wezen dezelfde (of equivalente) effecten die in PowerPoint worden gebruikt.
Animatie toepassen op een TextBox
Aspose.Slides voor .NET maakt het mogelijk om een animatie toe te passen op de tekst in een vorm.
- Maak een instantie van de Presentation‑klasse.
- Verkrijg een referentie naar een dia via de index.
- Voeg een
rectangleIAutoShape toe. - Voeg tekst toe aan IAutoShape.TextFrame.
- Haal de hoofdreeks van effecten op.
- Voeg een animatie‑effect toe aan IAutoShape.
- Stel de eigenschap TextAnimation.BuildType in op de waarde uit de BuildType‑enumeratie.
- Schrijf de presentatie naar schijf als een PPTX‑bestand.
Deze C#‑code laat zien hoe je het Fade‑effect toepast op een AutoShape en de tekstaniminatie instelt op de By 1st Level Paragraphs‑waarde:
// Maakt een presentatieklasse aan die een presentatiedocument vertegenwoordigt.
using (Presentation pres = new Presentation())
{
ISlide sld = pres.Slides[0];
// Voegt een nieuwe AutoShape toe met tekst
IAutoShape autoShape = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);
ITextFrame textFrame = autoShape.TextFrame;
textFrame.Text = "First paragraph \nSecond paragraph \n Third paragraph";
// Haal de hoofdreeks van de dia op.
ISequence sequence = sld.Timeline.MainSequence;
// Voegt het Fade‑animatie‑effect toe aan de vorm
IEffect effect = sequence.AddEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);
// Animeert de vormtekst per paragrafen van het eerste niveau
effect.TextAnimation.BuildType = BuildType.ByLevelParagraphs1;
// Sla het PPTX‑bestand op schijf
pres.Save(path + "AnimTextBox_out.pptx", SaveFormat.Pptx);
}
Animatie toepassen op een PictureFrame
- Maak een instantie van de Presentation‑klasse.
- Verkrijg een referentie naar een dia via de index.
- Voeg een PictureFrame toe aan of haal deze op van de dia.
- Haal de hoofdreeks van effecten op.
- Voeg een animatie‑effect toe aan PictureFrame.
- Schrijf de presentatie naar schijf als een PPTX‑bestand.
Deze C#‑code laat zien hoe je het Fly‑effect toepast op een picture frame:
// Maakt een presentatie‑klasse aan die een presentatiedocument vertegenwoordigt.
using (Presentation pres = new Presentation())
{
// Laad afbeelding die aan de afbeeldingcollectie van de presentatie wordt toegevoegd
IImage image = Images.FromFile("aspose-logo.jpg");
IPPImage ppImage = pres.Images.AddImage(image);
image.Dispose();
// Voegt een picture frame toe aan de dia
IPictureFrame picFrame = pres.Slides[0].Shapes.AddPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, ppImage);
// Haalt de hoofdreeks van de dia op.
ISequence sequence = pres.Slides[0].Timeline.MainSequence;
// Voegt het Fly‑from‑Left‑animatie‑effect toe aan picture frame
IEffect effect = sequence.AddEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);
// Sla het PPTX‑bestand op schijf
pres.Save("AnimImage_out.pptx", SaveFormat.Pptx);
}
Animatie toepassen op een Shape
- Maak een instantie van de Presentation‑klasse.
- Verkrijg een referentie naar een dia via de index.
- Voeg een
rectangleIAutoShape toe. - Voeg een
BevelIAutoShape toe (wanneer op dit object wordt geklikt, wordt de animatie afgespeeld). - Maak een reeks effecten voor de bevel‑vorm.
- Maak een aangepaste
UserPath. - Voeg opdrachten toe om naar de
UserPathte bewegen. - Schrijf de presentatie naar schijf als een PPTX‑bestand.
Deze C#‑code laat zien hoe je het PathFootball‑effect toepast op een vorm:
// Instantieert een Presentation-klasse die een presentatiedocument vertegenwoordigt.
using (Presentation pres = new Presentation())
{
ISlide sld = pres.Slides[0];
// Maakt het PathFootball-effect voor een bestaande vorm vanaf nul.
IAutoShape ashp = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);
ashp.AddTextFrame("Animated TextBox");
// Voegt het PathFootball-animatie-effect toe.
pres.Slides[0].Timeline.MainSequence.AddEffect(ashp, EffectType.PathFootball,
EffectSubtype.None, EffectTriggerType.AfterPrevious);
// Creëert een soort "knop".
IShape shapeTrigger = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Bevel, 10, 10, 20, 20);
// Maakt een reeks effecten voor de knop.
ISequence seqInter = pres.Slides[0].Timeline.InteractiveSequences.Add(shapeTrigger);
// Creëert een aangepast gebruikerspad. Ons object wordt pas verplaatst nadat de knop is aangeklikt.
IEffect fxUserPath = seqInter.AddEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);
// Voegt verplaatsingsopdrachten toe omdat het aangemaakte pad leeg is.
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);
// Schrijft het PPTX-bestand naar schijf
pres.Save("AnimExample_out.pptx", SaveFormat.Pptx);
}
De animatie‑effecten op een vorm ophalen
De volgende voorbeelden tonen hoe je de methode GetEffectsByShape van de interface ISequence gebruikt om alle animatie‑effecten op een vorm op te halen.
Voorbeeld 1: Animatie‑effecten ophalen die op een vorm zijn toegepast op een normale dia
Eerder leerde je hoe je animatie‑effecten toevoegt aan vormen in PowerPoint‑presentaties. De onderstaande voorbeeldcode laat zien hoe je de effecten ophaalt die op de eerste vorm van de eerste normale dia in de presentatie AnimExample_out.pptx zijn toegepast.
using (Presentation presentation = new Presentation("AnimExample_out.pptx"))
{
ISlide firstSlide = presentation.Slides[0];
// Haalt de hoofdanimatierij van de dia op.
ISequence sequence = firstSlide.Timeline.MainSequence;
// Haalt de eerste vorm op van de eerste dia.
IShape shape = firstSlide.Shapes[0];
// Haalt de animatie-effecten op die op de vorm zijn toegepast.
IEffect[] shapeEffects = sequence.GetEffectsByShape(shape);
if (shapeEffects.Length > 0)
Console.WriteLine($"The shape {shape.Name} has {shapeEffects.Length} animation effects.");
}
Voorbeeld 2: Alle animatie‑effecten ophalen, inclusief die welke zijn geërfd van placeholders
Als een vorm op een normale dia placeholders heeft die zich op de lay‑out‑dia en/of master‑dia bevinden, en er zijn animatie‑effecten aan deze placeholders toegevoegd, dan worden alle effecten van de vorm afgespeeld tijdens de diavoorstelling, inclusief de geërfde effecten.
Stel, we hebben een PowerPoint‑presentatie sample.pptx met één dia die alleen een voettekst‑vorm bevat met de tekst “Made with Aspose.Slides” en het Random Bars‑effect is op die vorm toegepast.

Stel bovendien dat het Split‑effect op de voettekst‑placeholder van de lay‑out‑dia is toegepast.

En tenslotte is het Fly In‑effect op de voettekst‑placeholder van de master‑dia toegepast.

De onderstaande voorbeeldcode toont hoe je de methode GetBasePlaceholder van de interface IShape gebruikt om toegang te krijgen tot de shape‑placeholders en de animatie‑effecten op de voettekst‑vorm op te halen, inclusief de geërfde effecten van de placeholders op de lay‑out‑ en master‑dia’s.
using (Presentation presentation = new Presentation("sample.pptx"))
{
ISlide slide = presentation.Slides[0];
// Haal de animatie‑effecten van de vorm op de normale dia op.
IShape shape = slide.Shapes[0];
IEffect[] shapeEffects = slide.Timeline.MainSequence.GetEffectsByShape(shape);
// Haal de animatie‑effecten van de placeholder op de lay‑outdia op.
IShape layoutShape = shape.GetBasePlaceholder();
IEffect[] layoutShapeEffects = slide.LayoutSlide.Timeline.MainSequence.GetEffectsByShape(layoutShape);
// Haal de animatie‑effecten van de placeholder op de master‑dia op.
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
Timing‑eigenschappen van animatie‑effecten aanpassen
Aspose.Slides voor .NET stelt je in staat de timing‑eigenschappen van een animatie‑effect te wijzigen.
Dit is het Animation Timing‑paneel en het uitgebreide menu in Microsoft PowerPoint:

Dit zijn de overeenkomsten tussen PowerPoint‑Timing en de eigenschappen van Effect.Timing:
- De vervolgkeuzelijst Start in PowerPoint‑Timing komt overeen met de eigenschap Effect.Timing.TriggerType.
- Duration in PowerPoint‑Timing komt overeen met de eigenschap Effect.Timing.Duration. De duur van een animatie (in seconden) is de totale tijd die de animatie nodig heeft om één cyclus te voltooien.
- Delay in PowerPoint‑Timing komt overeen met de eigenschap Effect.Timing.TriggerDelayTime.
- De vervolgkeuzelijst Repeat in PowerPoint‑Timing komt overeen met de volgende eigenschappen:
- Effect.Timing.RepeatCount – geeft het aantal keren aan dat het effect wordt herhaald;
- Effect.Timing.RepeatUntilEndSlide – geeft aan of het effect wordt herhaald tot het einde van de dia;
- Effect.Timing.RepeatUntilNextClick – geeft aan of het effect wordt herhaald tot de volgende klik.
- Het selectievakje Rewind when done playing in PowerPoint‑Timing komt overeen met de eigenschap Effect.Timing.Rewind.
Zo wijzig je de Effect‑Timing‑eigenschappen:
- Pas het animatie‑effect toe of haal het op.
- Stel nieuwe waarden in voor de Effect.Timing‑eigenschappen die je nodig hebt.
- Sla het aangepaste PPTX‑bestand op.
Deze C#‑code demonstreert de bewerking:
// Instantieert een presentatie‑klasse die een presentatiedocument vertegenwoordigt.
using (Presentation pres = new Presentation("AnimExample_out.pptx"))
{
// Haalt de hoofdreeks van de dia op.
ISequence sequence = pres.Slides[0].Timeline.MainSequence;
// Haalt het eerste effect van de hoofdreeks op.
IEffect effect = sequence[0];
// Wijzigt het TriggerType van het effect zodat het start bij een klik
effect.Timing.TriggerType = EffectTriggerType.OnClick;
// Wijzigt de duur van het effect
effect.Timing.Duration = 3f;
// Wijzigt de TriggerDelayTime van het effect
effect.Timing.TriggerDelayTime = 0.5f;
// Als de Repeat‑waarde van het effect "none" is
if (effect.Timing.RepeatCount == 1f)
{
// Wijzigt het Repeat‑attribuut van het effect naar "Until Next Click"
effect.Timing.RepeatUntilNextClick = true;
}
else
{
// Wijzigt het Repeat‑attribuut van het effect naar "Until End of Slide"
effect.Timing.RepeatUntilEndSlide = true;
}
// Schakelt het Rewind‑effect in
effect.Timing.Rewind = true;
// Slaat het PPTX‑bestand op schijf
pres.Save("AnimExample_changed.pptx", SaveFormat.Pptx);
}
Geluid van animatie‑effect
Aspose.Slides biedt de volgende eigenschappen om met geluiden in animatie‑effecten te werken:
Geluid aan een animatie‑effect toevoegen
Deze C#‑code toont hoe je een geluid aan een animatie‑effect toevoegt en stopt wanneer het volgende effect start:
using (Presentation pres = new Presentation("AnimExample_out.pptx"))
{
// Voegt audio toe aan de audio-collectie van de presentatie
IAudio effectSound = pres.Audios.AddAudio(File.ReadAllBytes("sampleaudio.wav"));
ISlide firstSlide = pres.Slides[0];
// Haalt de hoofdreeks van de dia op.
ISequence sequence = firstSlide.Timeline.MainSequence;
// Haalt het eerste effect van de hoofdreeks op
IEffect firstEffect = sequence[0];
// Controleert of het effect \"No Sound\" is
if (!firstEffect.StopPreviousSound && firstEffect.Sound == null)
{
// Voegt geluid toe aan het eerste effect
firstEffect.Sound = effectSound;
}
// Haalt de eerste interactieve reeks van de dia op.
ISequence interactiveSequence = firstSlide.Timeline.InteractiveSequences[0];
// Stelt de vlag \"Stop previous sound\" van het effect in
interactiveSequence[0].StopPreviousSound = true;
// Schrijft het PPTX-bestand naar schijf
pres.Save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
}
Geluid uit een animatie‑effect extraheren
- Maak een instantie van de Presentation‑klasse.
- Verkrijg een referentie naar een dia via de index.
- Haal de hoofdreeks van effecten op.
- Extraheer het Sound dat in elk animatie‑effect is ingebed.
Deze C#‑code toont hoe je het ingebedde geluid uit een animatie‑effect extraheert:
// Instantieert een presentatie‑klasse die een presentatiedocument vertegenwoordigt.
using (Presentation presentation = new Presentation("EffectSound.pptx"))
{
ISlide slide = presentation.Slides[0];
// Haalt de hoofdreeks van de dia op.
ISequence sequence = slide.Timeline.MainSequence;
foreach (IEffect effect in sequence)
{
if (effect.Sound == null)
continue;
// Extraheert het effectgeluid in een byte‑array
byte[] audio = effect.Sound.BinaryData;
}
}
After Animation
Aspose.Slides voor .NET maakt het mogelijk de After animation‑eigenschap van een animatie‑effect te wijzigen.
Dit is het Animation Effect‑paneel en het uitgebreide menu in Microsoft PowerPoint:

De vervolgkeuzelijst After animation in PowerPoint komt overeen met de volgende eigenschappen:
- De eigenschap IEffect.AfterAnimationType beschrijft het type after‑animation:
- More Colors in PowerPoint komt overeen met het type AfterAnimationType.Color ;
- Don’t Dim komt overeen met AfterAnimationType.DoNotDim (standaard after‑animation type);
- Hide After Animation komt overeen met AfterAnimationType.HideAfterAnimation ;
- Hide on Next Mouse Click komt overeen met AfterAnimationType.HideOnNextMouseClick ;
- De eigenschap IEffect.AfterAnimationColor definieert een kleurformaat voor after‑animation. Deze eigenschap werkt in combinatie met het type AfterAnimationType.Color. Als je het type wijzigt, wordt de after‑animation‑kleur gewist.
Deze C#‑code laat zien hoe je een after‑animation‑effect wijzigt:
// Instantieert een presentatie‑klasse die een presentatiedocument vertegenwoordigt
using (Presentation pres = new Presentation("AnimImage_out.pptx"))
{
ISlide firstSlide = pres.Slides[0];
// Haalt het eerste effect van de hoofdreeks op
IEffect firstEffect = firstSlide.Timeline.MainSequence[0];
// Wijzigt het after‑animation‑type naar Color
firstEffect.AfterAnimationType = AfterAnimationType.Color;
// Stelt de after‑animation dim‑kleur in
firstEffect.AfterAnimationColor.Color = Color.AliceBlue;
// Schrijft het PPTX‑bestand naar schijf
pres.Save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
}
Tekst animeren
Aspose.Slides biedt de volgende eigenschappen om met het Animate text‑blok van een animatie‑effect te werken:
- IEffect.AnimateTextType beschrijft het type tekstaniminatie van het effect. De tekst van een vorm kan worden geanimeerd:
- Alles tegelijk (AnimateTextType.AllAtOnce )
- Per woord (AnimateTextType.ByWord )
- Per letter (AnimateTextType.ByLetter )
- IEffect.DelayBetweenTextParts stelt een vertraging in tussen de geanimeerde tekstdelen (woorden of letters). Een positieve waarde geeft een percentage van de effectduur aan; een negatieve waarde geeft de vertraging in seconden aan.
Zo kun je de eigenschappen van Effect Animate text aanpassen:
- Pas het animatie‑effect toe of haal het op.
- Stel de eigenschap IEffect.TextAnimation.BuildType in op de waarde BuildType.AsOneObject om de By Paragraphs‑animatiemodus uit te schakelen.
- Stel nieuwe waarden in voor de eigenschappen IEffect.AnimateTextType en IEffect.DelayBetweenTextParts.
- Sla het aangepaste PPTX‑bestand op.
Deze C#‑code demonstreert de bewerking:
// Instantieert een presentatie‑klasse die een presentatiedocument vertegenwoordigt.
using (Presentation pres = new Presentation("AnimTextBox_out.pptx"))
{
ISlide firstSlide = pres.Slides[0];
// Haalt het eerste effect van de hoofdreeks op
IEffect firstEffect = firstSlide.Timeline.MainSequence[0];
// Wijzigt het effect Tekstanimatie‑type naar "As One Object"
firstEffect.TextAnimation.BuildType = BuildType.AsOneObject;
// Wijzigt het effect Animeren‑tekst‑type naar "By word"
firstEffect.AnimateTextType = AnimateTextType.ByWord;
// Stelt de vertraging tussen woorden in op 20% van de effectduur
firstEffect.DelayBetweenTextParts = 20f;
// Schrijft het PPTX‑bestand naar schijf
pres.Save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
}
FAQ
Hoe kan ik ervoor zorgen dat animaties behouden blijven bij het publiceren van de presentatie op het web?
Export to HTML5 en schakel de opties in die verantwoordelijk zijn voor animaties van shapes en transitions. Eenvoudige HTML speelt geen dia‑animaties af, terwijl HTML5 dat wel doet.
Hoe beïnvloedt het wijzigen van de z‑order (laagvolgorde) van vormen de animatie?
Animatie‑ en tekenvolgorde zijn onafhankelijk: een effect bepaalt wanneer en hoe iets verschijnt of verdwijnt, terwijl de z‑order bepaalt wat wat bedekt. Het zichtbare resultaat wordt bepaald door hun combinatie. (Dit is het algemene gedrag van PowerPoint; het model van Aspose.Slides voor effecten en vormen volgt dezelfde logica.)
Zijn er beperkingen bij het converteren van animaties naar video voor bepaalde effecten?
In het algemeen worden animaties ondersteund, maar zeldzame gevallen of specifieke effecten kunnen anders worden gerenderd. Het wordt aangeraden de gebruikte effecten en de versie van de bibliotheek te testen.