Animation de Formes
Les animations sont des effets visuels qui peuvent être appliqués aux textes, images, formes ou graphiques. Elles donnent vie aux présentations ou à leurs composants.
Pourquoi utiliser des animations dans les présentations ?
En utilisant des animations, vous pouvez
- contrôler le flux d’informations
- souligner des points importants
- augmenter l’intérêt ou la participation de votre audience
- rendre le contenu plus facile à lire, assimiler ou traiter
- attirer l’attention de vos lecteurs ou spectateurs sur des parties importantes d’une présentation
PowerPoint propose de nombreuses options et outils pour les animations et effets d’animation dans les catégories entrée, sortie, emphase et chemins de mouvement.
Animations dans Aspose.Slides
- Aspose.Slides fournit les classes et types dont vous avez besoin pour travailler avec des animations sous l’espace de noms
Aspose.Slides.Animation
, - Aspose.Slides propose plus de 150 effets d’animation sous l’énumération EffectType. Ces effets sont essentiellement les mêmes (ou équivalents) que ceux utilisés dans PowerPoint.
Appliquer une animation à TextBox
Aspose.Slides pour Java vous permet d’appliquer une animation au texte d’une forme.
- Créez une instance de la classe Presentation.
- Obtenez une référence de diapositive par son index.
- Ajoutez une forme de type
rectangle
IAutoShape. - Ajoutez du texte à IAutoShape.TextFrame.
- Obtenez une séquence principale d’effets.
- Ajoutez un effet d’animation à IAutoShape.
- Définissez la propriété
TextAnimation.BuildType
sur la valeur de l’énumérationBuildType
. - Enregistrez la présentation sur le disque sous forme de fichier PPTX.
Ce code Java vous montre comment appliquer l’effet Fade
à un AutoShape et définir l’animation du texte sur la valeur By 1st Level Paragraphs :
// Instantiates a presentation class that represents a presentation file.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Adds new AutoShape with text
IAutoShape autoShape = sld.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);
ITextFrame textFrame = autoShape.getTextFrame();
textFrame.setText("Premier paragraphe \nDeuxième paragraphe \nTroisième paragraphe");
// Gets the main sequence of the slide.
ISequence sequence = sld.getTimeline().getMainSequence();
// Adds Fade animation effect to shape
IEffect effect = sequence.addEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);
// Animates shape text by 1st level paragraphs
effect.getTextAnimation().setBuildType(BuildType.ByLevelParagraphs1);
// Save the PPTX file to disk
pres.save(path + "AnimText_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Appliquer une animation à PictureFrame
- Créez une instance de la classe Presentation.
- Obtenez une référence de diapositive par son index.
- Ajoutez ou obtenez un PictureFrame sur la diapositive.
- Obtenez la séquence principale d’effets.
- Ajoutez un effet d’animation à PictureFrame.
- Enregistrez la présentation sur le disque sous forme de fichier PPTX.
Ce code Java vous montre comment appliquer l’effet Fly
à un cadre d’image :
// Instantiates a presentation class that represents a presentation file.
Presentation pres = new Presentation();
try {
// Load Image to be added in presentaiton image collection
IPPImage picture;
IImage image = Images.fromFile("aspose-logo.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Adds picture frame to slide
IPictureFrame picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, picture);
// Gets the main sequence of the slide.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Adds Fly from Left animation effect to picture frame
IEffect effect = sequence.addEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);
// Save the PPTX file to disk
pres.save(path + "AnimImage_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Appliquer une animation à Shape
- Créez une instance de la classe Presentation.
- Obtenez une référence de diapositive par son index.
- Ajoutez une forme de type
rectangle
IAutoShape. - Ajoutez un IAutoShape de type
Bevel
(lorsque cet objet est cliqué, l’animation est lancée). - Créez une séquence d’effets sur la forme bevel.
- Créez un
UserPath
personnalisé. - Ajoutez des commandes pour le déplacement vers le
UserPath
. - Enregistrez la présentation sur le disque sous forme de fichier PPTX.
Ce code Java vous montre comment appliquer l’effet PathFootball
(chemin football) à une forme :
// Instantiate a Presentation class that represents a PPTX file.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Creates PathFootball effect for existing shape from scratch.
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);
ashp.addTextFrame("Texte Animé");
// Adds the PathFootBall animation effect
pres.getSlides().get_Item(0).getTimeline().getMainSequence().addEffect(ashp, EffectType.PathFootball,
EffectSubtype.None, EffectTriggerType.AfterPrevious);
// Creates some kind of "button".
IShape shapeTrigger = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Bevel, 10, 10, 20, 20);
// Creates a sequence of effects for this button.
ISequence seqInter = pres.getSlides().get_Item(0).getTimeline().getInteractiveSequences().add(shapeTrigger);
// Creates a custom user path. Our object will be moved only after the button is clicked.
IEffect fxUserPath = seqInter.addEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);
// Adds commands for moving since created path is empty.
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);
// Writes the PPTX file to disk
pres.save("AnimExample_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Obtenir les effets d’animation appliqués à une forme
Vous pouvez décider de découvrir tous les effets d’animation appliqués à une seule forme.
Ce code Java vous montre comment obtenir tous les effets appliqués à une forme spécifique :
// Instantiates a presentation class that represents a presentation file.
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Gets the main sequence of the slide.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Gets the first shape on slide.
IShape shape = firstSlide.getShapes().get_Item(0);
// Gets all animation effects applied to the shape.
IEffect[] shapeEffects = sequence.getEffectsByShape(shape);
if (shapeEffects.length > 0)
System.out.println("La forme " + shape.getName() + " a " + shapeEffects.length + " effets d'animation.");
} finally {
if (pres != null) pres.dispose();
}
Modifier les propriétés de timing des effets d’animation
Aspose.Slides pour Java vous permet de modifier les propriétés de timing d’un effet d’animation.
Voici le panneau de Timing d’Animation dans Microsoft PowerPoint :
Voici les correspondances entre le Timing de PowerPoint et les propriétés Effect.Timing :
- La liste déroulante Timing Début de PowerPoint correspond à la propriété Effect.Timing.TriggerType .
- La Durée de Timing de PowerPoint correspond à la propriété Effect.Timing.Duration . La durée d’une animation (en secondes) est le temps total nécessaire pour que l’animation complète un cycle.
- Le Délai de Timing correspond à la propriété Effect.Timing.TriggerDelayTime .
Voici comment vous modifiez les propriétés de Timing de l’effet :
- Appliquez ou obtenez l’effet d’animation.
- Définissez de nouvelles valeurs pour les propriétés Effect.Timing dont vous avez besoin.
- Enregistrez le fichier PPTX modifié.
Ce code Java démontre l’opération :
// Instantiates a presentation class that represents a presentation file.
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Gets the main sequence of the slide.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Gets the first effect of main sequence.
IEffect effect = sequence.get_Item(0);
// Changes effect TriggerType to start on click
effect.getTiming().setTriggerType(EffectTriggerType.OnClick);
// Changes effect Duration
effect.getTiming().setDuration(3f);
// Changes effect TriggerDelayTime
effect.getTiming().setTriggerDelayTime(0.5f);
// Saves the PPTX file to disk
pres.save("AnimExample_changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Son de l’effet d’animation
Aspose.Slides fournit ces propriétés pour vous permettre de travailler avec des sons dans les effets d’animation :
Ajouter le son d’effet d’animation
Ce code Java vous montre comment ajouter un son d’effet d’animation et l’arrêter lorsque l’effet suivant commence :
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Adds audio to presentation audio collection
IAudio effectSound = pres.getAudios().addAudio(Files.readAllBytes(Paths.get("sampleaudio.wav")));
ISlide firstSlide = pres.getSlides().get_Item(0);
// Gets the main sequence of the slide.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Gets the first effect of the main sequence
IEffect firstEffect = sequence.get_Item(0);
// Checks the effect for "No Sound"
if (!firstEffect.getStopPreviousSound() && firstEffect.getSound() == null)
{
// Adds sound for the first effect
firstEffect.setSound(effectSound);
}
// Gets the first interactive sequence of the slide.
ISequence interactiveSequence = firstSlide.getTimeline().getInteractiveSequences().get_Item(0);
// Sets the effect "Stop previous sound" flag
interactiveSequence.get_Item(0).setStopPreviousSound(true);
// Writes the PPTX file to disk
pres.save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Extraire le son de l’effet d’animation
- Créez une instance de la classe Presentation .
- Obtenez une référence de diapositive par son index.
- Obtenez la séquence principale d’effets.
- Extraire le son setSound(IAudio value) intégré à chaque effet d’animation.
Ce code Java vous montre comment extraire le son intégré dans un effet d’animation :
// Instantiates a presentation class that represents a presentation file.
Presentation presentation = new Presentation("EffectSound.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Gets the main sequence of the slide.
ISequence sequence = slide.getTimeline().getMainSequence();
for (IEffect effect : sequence)
{
if (effect.getSound() == null)
continue;
// Extracts the effect sound in byte array
byte[] audio = effect.getSound().getBinaryData();
}
} finally {
if (presentation != null) presentation.dispose();
}
Après animation
Aspose.Slides pour Java vous permet de modifier la propriété After animation d’un effet d’animation.
Voici le panneau d’Effet d’Animation et le menu étendu dans Microsoft PowerPoint :
La liste déroulante Après animation de l’effet PowerPoint correspond à ces propriétés :
- setAfterAnimationType(int value) qui décrit le type d’animation après :
- Les Plus de couleurs de PowerPoint correspondent au type AfterAnimationType.Color ;
- La liste des éléments Ne pas atténuer de PowerPoint correspond au type AfterAnimationType.DoNotDim (type par défaut après animation) ;
- L’élément Masquer après animation de PowerPoint correspond au type AfterAnimationType.HideAfterAnimation ;
- L’élément Masquer au prochain clic de souris correspond au type AfterAnimationType.HideOnNextMouseClick ;
- setAfterAnimationColor(IColorFormat value) qui définit un format de couleur après animation. Cette propriété fonctionne en conjonction avec le type AfterAnimationType.Color . Si vous changez le type en un autre, la couleur après animation sera effacée.
Ce code Java vous montre comment modifier un effet d’animation après :
// Instantiates a presentation class that represents a presentation file
Presentation pres = new Presentation("AnimImage_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Gets the first effect of the main sequence
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Changes the after animation type to Color
firstEffect.setAfterAnimationType(AfterAnimationType.Color);
// Sets the after animation dim color
firstEffect.getAfterAnimationColor().setColor(Color.BLUE);
// Writes the PPTX file to disk
pres.save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Animer le texte
Aspose.Slides fournit ces propriétés pour vous permettre de travailler avec le bloc d’effet Animer le texte :
- setAnimateTextType(int value) qui décrit un type d’animation de texte de l’effet. Le texte de la forme peut être animé :
- Tout à la fois (AnimateTextType.AllAtOnce type)
- Par mot (AnimateTextType.ByWord type)
- Par lettre (AnimateTextType.ByLetter type)
- setDelayBetweenTextParts(float value) définit un délai entre les parties de texte animées (mots ou lettres). Une valeur positive spécifie le pourcentage de la durée de l’effet. Une valeur négative spécifie le délai en secondes.
Voici comment vous pouvez modifier les propriétés d’animation de l’effet de texte :
- Appliquez ou obtenez l’effet d’animation.
- Définissez la propriété setBuildType(int value) sur la valeur BuildType.AsOneObject pour désactiver le mode Par paragraphes d’animation.
- Définissez de nouvelles valeurs pour les propriétés setAnimateTextType(int value) et setDelayBetweenTextParts(float value) .
- Enregistrez le fichier PPTX modifié.
Ce code Java démontre l’opération :
// Instantiates a presentation class that represents a presentation file.
Presentation pres = new Presentation("AnimTextBox_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Gets the first effect of the main sequence
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Changes the effect Text animation type to "As One Object"
firstEffect.getTextAnimation().setBuildType(BuildType.AsOneObject);
// Changes the effect Animate text type to "By word"
firstEffect.setAnimateTextType(AnimateTextType.ByWord);
// Sets the delay between words to 20% of effect duration
firstEffect.setDelayBetweenTextParts(20f);
// Writes the PPTX file to disk
pres.save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}