Shape-Animationen in Präsentationen in .NET anwenden

Animationen sind visuelle Effekte, die auf Texte, Bilder, Formen oder Diagramme angewendet werden können. Sie verleihen Präsentationen oder deren Bestandteilen Leben.

Warum Animationen in Präsentationen verwenden?

Mit Animationen können Sie

  • den Informationsfluss steuern
  • wichtige Punkte hervorheben
  • das Interesse oder die Beteiligung Ihres Publikums steigern
  • Inhalte leichter lesbar, verdaulich oder verarbeitbar machen
  • die Aufmerksamkeit Ihrer Leser oder Zuschauer auf wichtige Teile einer Präsentation lenken

PowerPoint bietet zahlreiche Optionen und Werkzeuge für Animationen und Animationseffekte in den Kategorien Eingang, Ausgang, Betonung und Bewegungspfade.

Animationen in Aspose.Slides

  • Aspose.Slides stellt die Klassen und Typen bereit, die Sie benötigen, um unter dem Namespace Aspose.Slides.Animation mit Animationen zu arbeiten,
  • Aspose.Slides bietet über 150 Animationseffekte im Aufzählungstyp EffectType an. Diese Effekte entsprechen im Wesentlichen den in PowerPoint verwendeten (oder gleichwertigen) Effekten.

Animation auf ein Textfeld anwenden

Aspose.Slides für .NET ermöglicht es Ihnen, Animationen auf den Text in einer Form anzuwenden.

  1. Erstellen Sie eine Instanz der Presentation‑Klasse.
  2. Holen Sie sich über den Index eine Referenz auf eine Folie.
  3. Fügen Sie ein rectangle IAutoShape hinzu.
  4. Fügen Sie Text zu IAutoShape.TextFrame hinzu.
  5. Holen Sie die Hauptsequenz der Effekte.
  6. Fügen Sie einen Animationseffekt zu IAutoShape hinzu.
  7. Setzen Sie die Eigenschaft TextAnimation.BuildType auf den Wert aus der BuildType Enumeration.
  8. Schreiben Sie die Präsentation als PPTX‑Datei auf die Festplatte.

Dieser C#‑Code zeigt, wie Sie den Fade‑Effekt auf AutoShape anwenden und die Textanimation auf den Wert By 1st Level Paragraphs setzen:

// Instanziiert eine Präsentationsklasse, die eine Präsentationsdatei repräsentiert.
using (Presentation pres = new Presentation())
{
    ISlide sld = pres.Slides[0];
    
    // Fügt ein neues AutoShape mit Text hinzu
    IAutoShape autoShape = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);

    ITextFrame textFrame = autoShape.TextFrame;
    textFrame.Text = "First paragraph \nSecond paragraph \n Third paragraph";

    // Ruft die Hauptsequenz der Folie ab.
    ISequence sequence = sld.Timeline.MainSequence;

    // Fügt dem Shape den Fade-Animationseffekt hinzu
    IEffect effect = sequence.AddEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);

    // Animiert den Shape-Text anhand von Absätzen der 1. Ebene
    effect.TextAnimation.BuildType = BuildType.ByLevelParagraphs1;

    // Speichert die PPTX-Datei auf der Festplatte
    pres.Save(path + "AnimTextBox_out.pptx", SaveFormat.Pptx);
}

Animation auf einen PictureFrame anwenden

  1. Erstellen Sie eine Instanz der Presentation‑Klasse.
  2. Holen Sie sich über den Index eine Referenz auf eine Folie.
  3. Fügen Sie einen PictureFrame hinzu oder holen Sie ihn von der Folie.
  4. Holen Sie die Hauptsequenz der Effekte.
  5. Fügen Sie einen Animationseffekt zu PictureFrame hinzu.
  6. Schreiben Sie die Präsentation als PPTX‑Datei auf die Festplatte.

Dieser C#‑Code zeigt, wie Sie den Fly‑Effekt auf einen Bildrahmen anwenden:

// Instanziert eine Präsentationsklasse, die eine Präsentationsdatei darstellt.
using (Presentation pres = new Presentation())
{
    // Bild laden, das zur Bildsammlung der Präsentation hinzugefügt wird
    IImage image = Images.FromFile("aspose-logo.jpg");
    IPPImage ppImage = pres.Images.AddImage(image);
    image.Dispose();

    // Fügt der Folie einen Bildrahmen hinzu
    IPictureFrame picFrame = pres.Slides[0].Shapes.AddPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, ppImage);

    // Ruft die Hauptsequenz der Folie ab.
    ISequence sequence = pres.Slides[0].Timeline.MainSequence;

    // Fügt dem Bildrahmen den Fly‑von‑links‑Animations‑Effekt hinzu
    IEffect effect = sequence.AddEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);

    // Speichert die PPTX‑Datei auf der Festplatte
    pres.Save("AnimImage_out.pptx", SaveFormat.Pptx);
}

Animation auf eine Form anwenden

  1. Erstellen Sie eine Instanz der Presentation‑Klasse.
  2. Holen Sie sich über den Index eine Referenz auf eine Folie.
  3. Fügen Sie ein rectangle IAutoShape hinzu.
  4. Fügen Sie ein BevelIAutoShape hinzu (wenn dieses Objekt angeklickt wird, wird die Animation abgespielt).
  5. Erstellen Sie eine Sequenz von Effekten für die Bevel‑Form.
  6. Erstellen Sie einen benutzerdefinierten UserPath.
  7. Fügen Sie Befehle zum Bewegen zu dem UserPath hinzu.
  8. Schreiben Sie die Präsentation als PPTX‑Datei auf die Festplatte.

Dieser C#‑Code zeigt, wie Sie den PathFootball‑Effekt (Pfad‑Football) auf eine Form anwenden:

// Instanziert eine Presentation‑Klasse, die eine Präsentationsdatei darstellt.
using (Presentation pres = new Presentation())
{
    ISlide sld = pres.Slides[0];

    // Erstellt den PathFootball‑Effekt für eine vorhandene Form von Grund auf.
    IAutoShape ashp = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);

    ashp.AddTextFrame("Animated TextBox");

    // Fügt den PathFootball‑Animationseffekt hinzu.
    pres.Slides[0].Timeline.MainSequence.AddEffect(ashp, EffectType.PathFootball,
                           EffectSubtype.None, EffectTriggerType.AfterPrevious);

    // Erstellt eine Art "Button".
    IShape shapeTrigger = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Bevel, 10, 10, 20, 20);

    // Erstellt eine Sequenz von Effekten für den Button.
    ISequence seqInter = pres.Slides[0].Timeline.InteractiveSequences.Add(shapeTrigger);

    // Erstellt einen benutzerdefinierten Pfad. Unser Objekt wird erst bewegt, nachdem der Button geklickt wurde.
    IEffect fxUserPath = seqInter.AddEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);

    // Fügt Befehle zum Bewegen hinzu, da der erstellte Pfad leer ist.
    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);

    // Schreibt die PPTX‑Datei auf die Festplatte
    pres.Save("AnimExample_out.pptx", SaveFormat.Pptx);
}

Animationseffekte, die auf eine Form angewendet wurden, abrufen

Die folgenden Beispiele zeigen, wie Sie die Methode GetEffectsByShape aus dem Interface ISequence verwenden, um alle auf eine Form angewendeten Animationseffekte zu erhalten.

Beispiel 1: Animationseffekte, die auf eine Form auf einer normalen Folie angewendet wurden, abrufen

Zuvor haben Sie gelernt, wie Sie Animationseffekte zu Formen in PowerPoint‑Präsentationen hinzufügen. Der folgende Beispielcode zeigt, wie Sie die Effekte abrufen, die auf die erste Form der ersten normalen Folie in der Präsentation AnimExample_out.pptx angewendet wurden.

using (Presentation presentation = new Presentation("AnimExample_out.pptx"))
{
    ISlide firstSlide = presentation.Slides[0];

    // Ruft die Hauptanimationssequenz der Folie ab.
    ISequence sequence = firstSlide.Timeline.MainSequence;

    // Ruft die erste Form auf der ersten Folie ab.
    IShape shape = firstSlide.Shapes[0];

    // Ruft die auf die Form angewendeten Animationseffekte ab.
    IEffect[] shapeEffects = sequence.GetEffectsByShape(shape);

    if (shapeEffects.Length > 0)
        Console.WriteLine($"The shape {shape.Name} has {shapeEffects.Length} animation effects.");
}

Beispiel 2: Alle Animationseffekte, einschließlich der von Platzhaltern geerbten, abrufen

Hat eine Form auf einer normalen Folie Platzhalter, die auf der Layout‑ oder Master‑Folie liegen, und wurden diesen Platzhaltern Animationseffekte hinzugefügt, dann werden alle Effekte der Form während der Bildschirmanzeige abgespielt, einschließlich der von den Platzhaltern geerbten.

Angenommen, wir haben die PowerPoint‑Datei sample.pptx mit einer Folie, die nur eine Fußzeilenform mit dem Text „Made with Aspose.Slides“ enthält und auf die der Effekt Random Bars angewendet wurde.

Slide shape animation effect

Nehmen wir weiter an, dass der Effekt Split auf den Fußzeilen‑Platzhalter der Layout‑Folie angewendet wurde.

Layout shape animation effect

Und schließlich wurde der Effekt Fly In auf den Fußzeilen‑Platzhalter der Master‑Folie angewendet.

Master shape animation effect

Der folgende Beispielcode zeigt, wie Sie die Methode GetBasePlaceholder aus dem Interface IShape verwenden, um auf die Form‑Platzhalter zuzugreifen und die auf die Fußzeilenform angewendeten Animationseffekte abzurufen, einschließlich der von Platzhaltern auf Layout‑ und Master‑Folien geerbten.

using (Presentation presentation = new Presentation("sample.pptx"))
{
    ISlide slide = presentation.Slides[0];

    // Erhalte die Animationseffekte der Form auf der normalen Folie.
    IShape shape = slide.Shapes[0];
    IEffect[] shapeEffects = slide.Timeline.MainSequence.GetEffectsByShape(shape);

    // Erhalte die Animationseffekte des Platzhalters auf der Layoutfolie.
    IShape layoutShape = shape.GetBasePlaceholder();
    IEffect[] layoutShapeEffects = slide.LayoutSlide.Timeline.MainSequence.GetEffectsByShape(layoutShape);

    // Erhalte die Animationseffekte des Platzhalters auf der Masterfolie.
    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}");
    }
}

Ausgabe:

Main sequence of shape effects:
Fly Bottom
Split VerticalIn
RandomBars Horizontal

Timing‑Eigenschaften von Animationseffekten ändern

Aspose.Slides für .NET ermöglicht es Ihnen, die Timing‑Eigenschaften eines Animationseffekts zu ändern.

Dies ist das Animations‑Timing‑Fenster und das erweiterte Menü in Microsoft PowerPoint:

example1_image

Dies sind die Entsprechungen zwischen PowerPoint‑Timing und den Eigenschaften von Effect.Timing:

So ändern Sie die Timing‑Eigenschaften eines Effekts:

  1. Apply oder holen Sie den Animationseffekt.
  2. Setzen Sie neue Werte für die gewünschten Effect.Timing‑Eigenschaften.
  3. Speichern Sie die geänderte PPTX‑Datei.

Dieser C#‑Code demonstriert die Vorgehensweise:

// Instanziert eine Präsentationsklasse, die eine Präsentationsdatei darstellt.
using (Presentation pres = new Presentation("AnimExample_out.pptx"))
{
    // Ruft die Hauptsequenz der Folie ab.
    ISequence sequence = pres.Slides[0].Timeline.MainSequence;

    // Ruft den ersten Effekt der Hauptsequenz ab.
    IEffect effect = sequence[0];

    // Ändert den TriggerType des Effekts auf Klickstart
    effect.Timing.TriggerType = EffectTriggerType.OnClick;

    // Ändert die Dauer des Effekts
    effect.Timing.Duration = 3f;

    // Ändert die Triggerverzögerungszeit des Effekts
    effect.Timing.TriggerDelayTime = 0.5f;

    // Wenn der Wiederholungswert des Effekts "keine" ist
    if (effect.Timing.RepeatCount == 1f)
    {
        // Ändert die Wiederholung des Effekts zu "Bis zum nächsten Klick"
        effect.Timing.RepeatUntilNextClick = true;
    }
    else
    {
        // Ändert die Wiederholung des Effekts zu "Bis zum Ende der Folie"
        effect.Timing.RepeatUntilEndSlide = true;
    }

    // Schaltet das Zurückspulen des Effekts ein
        effect.Timing.Rewind = true;
    
    // Speichert die PPTX-Datei auf der Festplatte
    pres.Save("AnimExample_changed.pptx", SaveFormat.Pptx);
}

Ton eines Animationseffekts

Aspose.Slides stellt diese Eigenschaften bereit, um mit Tönen in Animationseffekten zu arbeiten:

Einen Ton zu einem Animationseffekt hinzufügen

Dieser C#‑Code zeigt, wie Sie einem Animationseffekt einen Ton hinzufügen und diesen stoppen, wenn der nächste Effekt startet:

using (Presentation pres = new Presentation("AnimExample_out.pptx"))
{
	// Fügt Audio zur Audiosammlung der Präsentation hinzu
	IAudio effectSound = pres.Audios.AddAudio(File.ReadAllBytes("sampleaudio.wav"));

	ISlide firstSlide = pres.Slides[0];

	// Ruft die Hauptsequenz der Folie ab.
	ISequence sequence = firstSlide.Timeline.MainSequence;

	// Ruft den ersten Effekt der Hauptsequenz ab
	IEffect firstEffect = sequence[0];

	// Prüft den Effekt auf „Kein Ton“
	if (!firstEffect.StopPreviousSound && firstEffect.Sound == null)
	{
		// Fügt dem ersten Effekt einen Ton hinzu
		firstEffect.Sound = effectSound;
	}

	// Ruft die erste interaktive Sequenz der Folie ab.
	ISequence interactiveSequence = firstSlide.Timeline.InteractiveSequences[0];

	// Setzt das Flag „Stop previous sound“ des Effekts
	interactiveSequence[0].StopPreviousSound = true;

	// Schreibt die PPTX-Datei auf die Festplatte
	pres.Save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
}

Einen Ton aus einem Animationseffekt extrahieren

  1. Erstellen Sie eine Instanz der Presentation‑Klasse.
  2. Holen Sie sich über den Index eine Referenz auf eine Folie.
  3. Holen Sie die Hauptsequenz der Effekte.
  4. Extrahieren Sie den zu jedem Animationseffekt eingebetteten Sound.

Dieser C#‑Code zeigt, wie Sie den in einem Animationseffekt eingebetteten Ton extrahieren:

// Instanziert eine Präsentationsklasse, die eine Präsentationsdatei darstellt.
using (Presentation presentation = new Presentation("EffectSound.pptx"))
{
    ISlide slide = presentation.Slides[0];

    // Ruft die Hauptsequenz der Folie ab.
    ISequence sequence = slide.Timeline.MainSequence;

    foreach (IEffect effect in sequence)
    {
        if (effect.Sound == null)
            continue;

        // Extrahiert den Effektton in ein Byte-Array
        byte[] audio = effect.Sound.BinaryData;
    }
}

After Animation

Aspose.Slides für .NET ermöglicht es Ihnen, die After‑Animation‑Eigenschaft eines Animationseffekts zu ändern.

Dies ist das After‑Animation‑Fenster und das erweiterte Menü in Microsoft PowerPoint:

example1_image

Das Dropdown‑Feld After animation von PowerPoint entspricht diesen Eigenschaften:

Dieser C#‑Code zeigt, wie Sie einen After‑Animation‑Effekt ändern:

 // Instanziert eine Präsentationsklasse, die eine Präsentationsdatei darstellt
 using (Presentation pres = new Presentation("AnimImage_out.pptx"))
 {
     ISlide firstSlide = pres.Slides[0];

     // Ruft den ersten Effekt der Hauptsequenz ab
     IEffect firstEffect = firstSlide.Timeline.MainSequence[0];

     // Ändert den After-Animation-Typ zu Farbe
     firstEffect.AfterAnimationType = AfterAnimationType.Color;

     // Legt die Dim-Farbe der After-Animation fest
     firstEffect.AfterAnimationColor.Color = Color.AliceBlue;

     // Schreibt die PPTX-Datei auf die Festplatte
     pres.Save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
 }

Text animieren

Aspose.Slides stellt diese Eigenschaften bereit, um den Animate text‑Block eines Animationseffekts zu bearbeiten:

So ändern Sie die Eigenschaften des Effect‑Animate‑Text:

  1. Apply oder holen Sie den Animationseffekt.
  2. Setzen Sie die Eigenschaft IEffect.TextAnimation.BuildType auf den Wert BuildType.AsOneObject, um den Animationsmodus By Paragraphs zu deaktivieren.
  3. Setzen Sie neue Werte für die Eigenschaften IEffect.AnimateTextType und IEffect.DelayBetweenTextParts.
  4. Speichern Sie die geänderte PPTX‑Datei.

Dieser C#‑Code demonstriert die Vorgehensweise:

// Instanziert eine Präsentationsklasse, die eine Präsentationsdatei darstellt.
using (Presentation pres = new Presentation("AnimTextBox_out.pptx"))
{
    ISlide firstSlide = pres.Slides[0];

    // Ruft den ersten Effekt der Hauptsequenz ab
    IEffect firstEffect = firstSlide.Timeline.MainSequence[0];

    // Ändert den Textanimationstyp des Effekts zu "As One Object"
    firstEffect.TextAnimation.BuildType = BuildType.AsOneObject;

    // Ändert den Animate-Text-Typ des Effekts zu "By word"
    firstEffect.AnimateTextType = AnimateTextType.ByWord;

    // Setzt die Verzögerung zwischen Wörtern auf 20% der Effekt-Dauer
    firstEffect.DelayBetweenTextParts = 20f;

    // Schreibt die PPTX-Datei auf die Festplatte
    pres.Save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
}

FAQ

Wie kann ich sicherstellen, dass Animationen beim Veröffentlichen der Präsentation im Web erhalten bleiben?

Export to HTML5 und aktivieren Sie die options, die für die Animationen von shape und transition verantwortlich sind. Reines HTML spielt Folienanimationen nicht ab, HTML5 jedoch schon.

Wie wirkt sich das Ändern der Z‑Reihenfolge (Layer‑Reihenfolge) von Formen auf Animationen aus?

Animation und Zeichenreihenfolge sind unabhängig: Ein Effekt steuert das Timing und den Typ des Erscheinens/Vergehens, während die z-order bestimmt, was was überdeckt. Das sichtbare Ergebnis ergibt sich aus ihrer Kombination. (Dies ist das allgemeine Verhalten von PowerPoint; das Aspose.Slides‑Modell für Effekte‑und‑Formen folgt derselben Logik.)

Gibt es Einschränkungen beim Konvertieren von Animationen in Video für bestimmte Effekte?

Im Allgemeinen werden Animationen unterstützt, aber seltene Fälle oder bestimmte Effekte können anders gerendert werden. Es wird empfohlen, die von Ihnen genutzten Effekte und die verwendete Bibliotheksversion zu testen.