Shape-Animationen in Präsentationen mit Java anwenden
Animationen sind visuelle Effekte, die auf Texte, Bilder, Formen oder Diagrammen angewendet werden können. Sie verleihen Präsentationen oder deren Bestandteilen Leben.
Warum Animationen in Präsentationen verwenden?
Durch den Einsatz von Animationen können Sie
- den Informationsfluss steuern
- wichtige Punkte hervorheben
- das Interesse oder die Beteiligung des Publikums steigern
- Inhalte leichter les‑ bzw. verständlich machen
- die Aufmerksamkeit der 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 mit Animationen im Namensraum
Aspose.Slides.Animationzu arbeiten, - Aspose.Slides bietet über 150 Animationseffekte im EffectType-Aufzählung. Diese Effekte entsprechen im Wesentlichen den in PowerPoint verwendeten Effekten (oder sind äquivalent).
Animation auf ein Textfeld anwenden
Aspose.Slides für Java ermöglicht das Anwenden von Animationen auf den Text in einer Form.
- Erstellen Sie eine Instanz der Klasse Presentation.
- Rufen Sie eine Folienreferenz über deren Index ab.
- Fügen Sie ein
rectangle‑IAutoShape hinzu. - Fügen Sie Text zu IAutoShape.TextFrame hinzu.
- Erhalten Sie die Hauptsequenz von Effekten.
- Fügen Sie einen Animationseffekt zu IAutoShape hinzu.
- Setzen Sie die Eigenschaft
TextAnimation.BuildTypeauf einen Wert aus der AufzählungBuildType. - Schreiben Sie die Präsentation als PPTX-Datei auf die Festplatte.
Der folgende Java‑Code zeigt, wie man den Fade‑Effekt auf ein AutoShape anwendet und die Textanimation auf den Wert By 1st Level Paragraphs einstellt:
// Instanziiert eine Präsentationsklasse, die eine Präsentationsdatei darstellt.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Fügt eine neue AutoShape mit Text hinzu
IAutoShape autoShape = sld.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);
ITextFrame textFrame = autoShape.getTextFrame();
textFrame.setText("First paragraph \nSecond paragraph \n Third paragraph");
// Erhält die Hauptsequenz der Folie.
ISequence sequence = sld.getTimeline().getMainSequence();
// Fügt der Form den Fade-Animationseffekt hinzu
IEffect effect = sequence.addEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);
// Animiert den Formtext nach Absätzen der ersten Ebene
effect.getTextAnimation().setBuildType(BuildType.ByLevelParagraphs1);
// Speichert die PPTX-Datei auf dem Datenträger
pres.save(path + "AnimText_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Animation auf ein PictureFrame anwenden
- Erstellen Sie eine Instanz der Klasse Presentation.
- Rufen Sie die Referenz einer Folie über deren Index ab.
- Fügen Sie ein PictureFrame hinzu oder holen Sie es von der Folie.
- Holen Sie die Hauptsequenz der Effekte.
- Fügen Sie einen Animationseffekt zu PictureFrame hinzu.
- Schreiben Sie die Präsentation als PPTX-Datei auf die Festplatte.
Der folgende Java‑Code zeigt, wie man den Fly‑Effekt auf einen Bildrahmen anwendet:
// Instanziert eine Präsentationsklasse, die eine Präsentationsdatei repräsentiert.
Presentation pres = new Presentation();
try {
// Lädt ein Bild, das der Bildsammlung der Präsentation hinzugefügt werden soll
IPPImage picture;
IImage image = Images.fromFile("aspose-logo.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Fügt einen Bildrahmen zur Folie hinzu
IPictureFrame picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, picture);
// Ermittelt die Hauptsequenz der Folie.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Fügt dem Bildrahmen den Fly‑von‑links‑Animationseffekt hinzu
IEffect effect = sequence.addEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);
// Speichert die PPTX‑Datei auf dem Datenträger
pres.save(path + "AnimImage_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Animation auf eine Form anwenden
- Erstellen Sie eine Instanz der Presentation-Klasse.
- Rufen Sie die Referenz einer Folie über deren Index ab.
- Fügen Sie ein
rectangle‑IAutoShape hinzu. - Fügen Sie ein
Bevel‑IAutoShape hinzu (wenn dieses Objekt angeklickt wird, wird die Animation abgespielt). - Erstellen Sie eine Sequenz von Effekten für die Bevel‑Form.
- Erstellen Sie einen benutzerdefinierten
UserPath. - Fügen Sie Befehle zum Bewegen auf den
UserPathhinzu. - Schreiben Sie die Präsentation als PPTX-Datei auf die Festplatte.
Der folgende Java‑Code zeigt, wie man den PathFootball‑Effekt (Pfad‑Fußball) auf eine Form anwendet:
// Instanziiert eine Presentation-Klasse, die eine PPTX-Datei darstellt.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Erstellt den PathFootball-Effekt für eine vorhandene Form von Grund auf.
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);
ashp.addTextFrame("Animated TextBox");
// Fügt den PathFootball-Animationseffekt hinzu
pres.getSlides().get_Item(0).getTimeline().getMainSequence().addEffect(ashp, EffectType.PathFootball,
EffectSubtype.None, EffectTriggerType.AfterPrevious);
// Erstellt eine Art "button".
IShape shapeTrigger = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Bevel, 10, 10, 20, 20);
// Erstellt eine Sequenz von Effekten für diesen Button.
ISequence seqInter = pres.getSlides().get_Item(0).getTimeline().getInteractiveSequences().add(shapeTrigger);
// Erstellt einen benutzerdefinierten Pfad. Unser Objekt wird erst nach dem Klick auf den Button bewegt.
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.getBehaviors().get_Item(0));
Point2D.Float[] pts = new Point2D.Float[1];
pts[0] = new Point2D.Float(0.076f, 0.59f);
motionBhv.getPath().add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, true);
pts[0] = new Point2D.Float(-0.076f, -0.59f);
motionBhv.getPath().add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, false);
motionBhv.getPath().add(MotionCommandPathType.End, null, MotionPathPointsType.Auto, false);
// Schreibt die PPTX-Datei auf die Festplatte
pres.save("AnimExample_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Animationseffekte einer Form abrufen
Die folgenden Beispiele zeigen, wie Sie die Methode getEffectsByShape aus der ISequence‑Schnittstelle verwenden, um alle auf eine Form angewendeten Animationseffekte abzurufen.
Beispiel 1: Animationseffekte einer Form auf einer normalen Folie abrufen
Zuvor haben Sie gelernt, wie man Animationseffekte zu Formen in PowerPoint‑Präsentationen hinzufügt. Der folgende Beispielcode zeigt, wie man die Effekte der ersten Form auf der ersten normalen Folie in der Präsentation AnimExample_out.pptx abruft.
Presentation presentation = new Presentation("AnimExample_out.pptx");
try {
ISlide firstSlide = presentation.getSlides().get_Item(0);
// Ermittelt die Hauptanimationssequenz der Folie.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Ermittelt die erste Form auf der ersten Folie.
IShape shape = firstSlide.getShapes().get_Item(0);
// Ermittelt die auf die Form angewendeten Animationseffekte.
IEffect[] shapeEffects = sequence.getEffectsByShape(shape);
if (shapeEffects.length > 0)
System.out.println("The shape " + shape.getName() + " has " + shapeEffects.length + " animation effects.");
} finally {
if (presentation != null) presentation.dispose();
}
Beispiel 2: Alle Animationseffekte, einschließlich der von Platzhaltern geerbten, abrufen
Wenn eine Form auf einer normalen Folie Platzhalter hat, die sich auf der Layout‑Folie und/oder Master‑Folie befinden, und diesen Platzhaltern Animationseffekte zugewiesen wurden, 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ßzeilen‑Form mit dem Text „Made with Aspose.Slides“ enthält und auf die der Effekt Random Bars angewendet wurde.

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

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

Der folgende Beispielcode zeigt, wie man die Methode getBasePlaceholder aus der IShape‑Schnittstelle verwendet, um auf die Platzhalter der Form zuzugreifen und die auf die Fußzeilen‑Form angewendeten Animationseffekte zu erhalten, einschließlich der von Platzhaltern auf Layout‑ und Master‑Folien geerbten.
Presentation presentation = new Presentation("sample.pptx");
ISlide slide = presentation.getSlides().get_Item(0);
// Get animation effects of the shape on the normal slide.
IShape shape = slide.getShapes().get_Item(0);
IEffect[] shapeEffects = slide.getTimeline().getMainSequence().getEffectsByShape(shape);
// Get animation effects of the placeholder on the layout slide.
IShape layoutShape = shape.getBasePlaceholder();
IEffect[] layoutShapeEffects = slide.getLayoutSlide().getTimeline().getMainSequence().getEffectsByShape(layoutShape);
// Get animation effects of the placeholder on the master slide.
IShape masterShape = layoutShape.getBasePlaceholder();
IEffect[] masterShapeEffects = slide.getLayoutSlide().getMasterSlide().getTimeline().getMainSequence().getEffectsByShape(masterShape);
System.out.println("Main sequence of shape effects:");
printEffects(masterShapeEffects);
printEffects(layoutShapeEffects);
printEffects(shapeEffects);
presentation.dispose();
static void printEffects(IEffect[] effects)
{
for (IEffect effect : effects)
{
String typeName = EffectType.getName(EffectType.class, effect.getType());
String subtypeName = EffectSubtype.getName(EffectSubtype.class, effect.getSubtype());
System.out.println(typeName + " " + subtypeName);
}
}
Output:
Main sequence of shape effects:
Fly Bottom
Split VerticalIn
RandomBars Horizontal
Zeitsteuerungseigenschaften von Animationseffekten ändern
Aspose.Slides für Java ermöglicht das Ändern der Zeitsteuerungseigenschaften eines Animationseffekts.
Dies ist das Animations‑Timing‑Fenster in Microsoft PowerPoint:

Diese Zuordnungen zwischen PowerPoint‑Timing und Effect.Timing‑Eigenschaften gelten:
- Die Start‑Dropdown‑Liste der PowerPoint‑Zeitsteuerung entspricht der Eigenschaft Effect.Timing.TriggerType.
- Die Duration‑Zeitsteuerung von PowerPoint entspricht der Eigenschaft Effect.Timing.Duration. Die Dauer eines Effekts (in Sekunden) ist die Gesamtzeit, die das Ergebnis für einen Durchlauf benötigt.
- Die Delay‑Zeitsteuerung von PowerPoint entspricht der Eigenschaft Effect.Timing.TriggerDelayTime.
So ändern Sie die Effect‑Timing‑Eigenschaften:
- Anwenden oder das Animationseffekt abrufen.
- Setzen Sie neue Werte für die benötigten Effect.Timing‑Eigenschaften.
- Speichern Sie die geänderte PPTX‑Datei.
// Instanziert eine Präsentationsklasse, die eine Präsentationsdatei darstellt.
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Ermittelt die Hauptsequenz der Folie.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Ermittelt den ersten Effekt der Hauptsequenz.
IEffect effect = sequence.get_Item(0);
// Ändert den TriggerType des Effekts auf Klick
effect.getTiming().setTriggerType(EffectTriggerType.OnClick);
// Ändert die Dauer des Effekts
effect.getTiming().setDuration(3f);
// Ändert die TriggerDelayTime des Effekts
effect.getTiming().setTriggerDelayTime(0.5f);
// Speichert die PPTX-Datei auf dem Datenträger
pres.save("AnimExample_changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Sound für Animationseffekt
Aspose.Slides stellt die folgenden Eigenschaften bereit, um mit Sounds in Animationseffekten zu arbeiten:
Sound zu einem Animationseffekt hinzufügen
Der folgende Java‑Code zeigt, wie man einen Sound zu einem Animationseffekt hinzufügt und ihn stoppt, wenn der nächste Effekt startet:
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Fügt Audio zur Audiosammlung der Präsentation hinzu
IAudio effectSound = pres.getAudios().addAudio(Files.readAllBytes(Paths.get("sampleaudio.wav")));
ISlide firstSlide = pres.getSlides().get_Item(0);
// Ermittelt die Hauptsequenz der Folie.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Ermittelt den ersten Effekt der Hauptsequenz
IEffect firstEffect = sequence.get_Item(0);
// Prüft den Effekt auf "No Sound"
if (!firstEffect.getStopPreviousSound() && firstEffect.getSound() == null)
{
// Fügt dem ersten Effekt Sound hinzu
firstEffect.setSound(effectSound);
}
// Ermittelt die erste interaktive Sequenz der Folie.
ISequence interactiveSequence = firstSlide.getTimeline().getInteractiveSequences().get_Item(0);
// Setzt das Flag "Stop previous sound" für den Effekt
interactiveSequence.get_Item(0).setStopPreviousSound(true);
// Schreibt die PPTX-Datei auf die Festplatte
pres.save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Sound aus einem Animationseffekt extrahieren
- Erstellen Sie eine Instanz der Klasse Presentation .
- Rufen Sie die Referenz einer Folie über deren Index ab.
- Holen Sie die Hauptsequenz der Effekte.
- Extrahieren Sie den in jedem Animationseffekt eingebetteten setSound(IAudio value) .
Der folgende Java‑Code zeigt, wie man den in einem Animationseffekt eingebetteten Sound extrahiert:
// Instanziert eine Präsentationsklasse, die eine Präsentationsdatei darstellt.
Presentation presentation = new Presentation("EffectSound.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Ermittelt die Hauptsequenz der Folie.
ISequence sequence = slide.getTimeline().getMainSequence();
for (IEffect effect : sequence)
{
if (effect.getSound() == null)
continue;
// Extrahiert den Effekt-Sound in ein Byte-Array
byte[] audio = effect.getSound().getBinaryData();
}
} finally {
if (presentation != null) presentation.dispose();
}
Nach Animation
Aspose.Slides für Java ermöglicht das Ändern der Eigenschaft „After animation“ eines Animationseffekts.
Dies ist das Fenster für Animationseffekte und das erweiterte Menü in Microsoft PowerPoint:

- Die Eigenschaft setAfterAnimationType(int value) beschreibt den Typ der Nachanimation:
- PowerPoint More Colors entspricht dem Typ AfterAnimationType.Color;
- PowerPoint Don’t Dim entspricht dem Typ AfterAnimationType.DoNotDim (Standard‑Nachanimationstyp);
- PowerPoint Hide After Animation entspricht dem Typ AfterAnimationType.HideAfterAnimation;
- PowerPoint Hide on Next Mouse Click entspricht dem Typ AfterAnimationType.HideOnNextMouseClick;
- Die Eigenschaft setAfterAnimationColor(IColorFormat value) definiert ein Farbformat für die Nachanimation. Diese Eigenschaft wird in Verbindung mit dem Typ AfterAnimationType.Color verwendet. Ändert man den Typ, wird die Nachanimationsfarbe zurückgesetzt.
// Instanziert eine Präsentationsklasse, die eine Präsentationsdatei darstellt
Presentation pres = new Presentation("AnimImage_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Ermittelt den ersten Effekt der Hauptsequenz
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Ändert den Nachanimations-Typ zu Farbe
firstEffect.setAfterAnimationType(AfterAnimationType.Color);
// Setzt die Nachanimations-Dim-Farbe
firstEffect.getAfterAnimationColor().setColor(Color.BLUE);
// Schreibt die PPTX-Datei auf die Festplatte
pres.save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Text animieren
Aspose.Slides stellt die folgenden Eigenschaften bereit, um mit dem Animate text‑Block eines Animationseffekts zu arbeiten:
- Die Eigenschaft setAnimateTextType(int value) beschreibt den Typ der Textanimation des Effekts. Der Text einer Form kann animiert werden:
- Alles auf einmal (AnimateTextType.AllAtOnce)
- Wortweise (AnimateTextType.ByWord)
- Buchstabenweise (AnimateTextType.ByLetter)
- Die Eigenschaft setDelayBetweenTextParts(float value) legt eine Verzögerung zwischen den animierten Textteilen (Wörter oder Buchstaben) fest. Ein positiver Wert gibt den Prozentsatz der Effektdauer an, ein negativer Wert die Verzögerung in Sekunden.
- Anwenden oder den Animationseffekt holen.
- Setzen Sie die Eigenschaft setBuildType(int value) auf den Wert BuildType.AsOneObject, um den Animationsmodus By Paragraphs zu deaktivieren.
- Setzen Sie neue Werte für die Eigenschaften setAnimateTextType(int value) und setDelayBetweenTextParts(float value).
- Speichern Sie die geänderte PPTX‑Datei.
// Instanziert eine Präsentationsklasse, die eine Präsentationsdatei darstellt.
Presentation pres = new Presentation("AnimTextBox_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Ermittelt den ersten Effekt der Hauptsequenz
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Ändert den Textanimations-Typ des Effekts zu "As One Object"
firstEffect.getTextAnimation().setBuildType(BuildType.AsOneObject);
// Ändert den Animate-Text-Typ des Effekts zu "By word"
firstEffect.setAnimateTextType(AnimateTextType.ByWord);
// Setzt die Verzögerung zwischen Wörtern auf 20% der Effektdauer
firstEffect.setDelayBetweenTextParts(20f);
// Schreibt die PPTX-Datei auf die Festplatte
pres.save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
FAQ
Wie kann ich sicherstellen, dass Animationen beim Veröffentlichen der Präsentation im Web erhalten bleiben?
Export to HTML5 und aktivieren Sie die Optionen, die für die Animation von Formen und Übergängen verantwortlich sind. Reines HTML spielt Folienanimationen nicht ab, HTML5 jedoch schon.
Wie wirkt sich das Ändern der Z‑Reihenfolge (Schichtenreihenfolge) von Formen auf die Animation aus?
Animation und Zeichenreihenfolge sind unabhängig: Ein Effekt steuert das Timing und den Typ des Erscheinens/Verscheidens, während die z-order bestimmt, was was überdeckt. Das sichtbare Ergebnis ergibt sich aus ihrer Kombination. (Dies ist das allgemeine PowerPoint‑Verhalten; 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, doch seltene Fälle oder bestimmte Effekte können anders gerendert werden. Es wird empfohlen, die von Ihnen genutzten Effekte und die Bibliotheksversion zu testen.