Animation de Forme
Les animations sont des effets visuels qui peuvent être appliqués à des textes, des images, des formes ou des graphique. Elles donnent vie aux présentations ou à ses 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 fournit de nombreuses options et outils pour les animations et les effets d’animation dans les catégories entrée, sortie, emphase, et trajets de mouvement.
Animations dans Aspose.Slides
- Aspose.Slides fournit les classes et types nécessaires pour travailler avec les animations sous l’espace de noms
Aspose.Slides.Animation
, - Aspose.Slides fournit 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 PHP via 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 à une diapositive par son index.
- Ajoutez une forme
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 disque en tant que fichier PPTX.
Ce code PHP vous montre comment appliquer l’effet Fade
à AutoShape et définir l’animation de texte sur la valeur Par 1er niveau de paragraphes :
# Instancie une classe de présentation qui représente un fichier de présentation.
$pres = new Presentation();
try {
$sld = $pres->getSlides()->get_Item(0);
# Ajoute une nouvelle AutoShape avec du texte
$autoShape = $sld->getShapes()->addAutoShape(ShapeType::Rectangle, 20, 20, 150, 100);
$textFrame = $autoShape->getTextFrame();
$textFrame->setText("Premier paragraphe \nDeuxième paragraphe \n Troisième paragraphe");
# Obtient la séquence principale de la diapositive.
$sequence = $sld->getTimeline()->getMainSequence();
# Ajoute un effet d'animation de fondu à la forme
$effect = $sequence->addEffect($autoShape, EffectType::Fade, EffectSubType::None, EffectTriggerType::OnClick);
# Anime le texte de la forme par les paragraphes de 1er niveau
$effect->getTextAnimation()->setBuildType(BuildType::ByLevelParagraphs1);
# Enregistre le fichier PPTX sur disque
$pres->save($path . "AnimText_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Appliquer une animation à PictureFrame
- Créez une instance de la classe Presentation.
- Obtenez une référence à une 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 disque en tant que fichier PPTX.
Ce code PHP vous montre comment appliquer l’effet Fly
à un cadre d’image :
# Instancie une classe de présentation qui représente un fichier de présentation.
$pres = new Presentation();
try {
# Charge l'image à ajouter dans la collection d'images de présentation
$picture;
$image = Images->fromFile("aspose-logo.jpg");
try {
$picture = $pres->getImages()->addImage($image);
} finally {
if (!java_is_null($image)) {
$image->dispose();
}
}
# Ajoute un cadre d'image à la diapositive
$picFrame = $pres->getSlides()->get_Item(0)->getShapes()->addPictureFrame(ShapeType::Rectangle, 50, 50, 100, 100, $picture);
# Obtient la séquence principale de la diapositive.
$sequence = $pres->getSlides()->get_Item(0)->getTimeline()->getMainSequence();
# Ajoute un effet d'animation de vol depuis la gauche au cadre d'image
$effect = $sequence->addEffect($picFrame, EffectType::Fly, EffectSubType::Left, EffectTriggerType::OnClick);
# Enregistre le fichier PPTX sur disque
$pres->save($path . "AnimImage_out.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Appliquer une animation à une forme
- Créez une instance de la classe Presentation.
- Obtenez une référence à une diapositive par son index.
- Ajoutez une forme
rectangle
IAutoShape. - Ajoutez un IAutoShape
Bevel
(lorsque cet objet est cliqué, l’animation se joue). - Créez une séquence d’effets sur la forme bevel.
- Créez un
UserPath
personnalisé. - Ajoutez des commandes pour se déplacer vers le
UserPath
. - Enregistrez la présentation sur disque en tant que fichier PPTX.
Ce code PHP vous montre comment appliquer l’effet PathFootball
à une forme :
# Instancie une classe de présentation qui représente un fichier PPTX.
$pres = new Presentation();
try {
$sld = $pres->getSlides()->get_Item(0);
# Crée l'effet PathFootball pour une forme existante à partir de zéro.
$ashp = $sld->getShapes()->addAutoShape(ShapeType::Rectangle, 150, 150, 250, 25);
$ashp->addTextFrame("Boîte de texte animée");
# Ajoute l'effet d'animation PathFootBall
$pres->getSlides()->get_Item(0)->getTimeline()->getMainSequence()->addEffect($ashp, EffectType::PathFootball, EffectSubType::None, EffectTriggerType::AfterPrevious);
# Crée une sorte de "bouton".
$shapeTrigger = $pres->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Bevel, 10, 10, 20, 20);
# Crée une séquence d'effets pour ce bouton.
$seqInter = $pres->getSlides()->get_Item(0)->getTimeline()->getInteractiveSequences()->add($shapeTrigger);
# Crée un chemin utilisateur personnalisé. Notre objet sera déplacé uniquement après le clic sur le bouton.
$fxUserPath = $seqInter->addEffect($ashp, EffectType::PathUser, EffectSubType::None, EffectTriggerType::OnClick);
# Ajoute des commandes de mouvement puisque le chemin créé est vide.
$motionBhv = $fxUserPath->getBehaviors()->get_Item(0);
$pts = new Point2DFloat[1];
$pts[0] = new Point2DFloat(0.076, 0.59);
$motionBhv->getPath()->add(MotionCommandPathType::LineTo, $pts, MotionPathPointsType::Auto, true);
$pts[0] = new Point2DFloat(-0.076, -0.59);
$motionBhv->getPath()->add(MotionCommandPathType::LineTo, $pts, MotionPathPointsType::Auto, false);
$motionBhv->getPath()->add(MotionCommandPathType::End, null, MotionPathPointsType::Auto, false);
# Écrit le fichier PPTX sur disque
$pres->save("AnimExample_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$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 PHP vous montre comment obtenir tous les effets appliqués à une forme spécifique :
# Instancie une classe de présentation qui représente un fichier de présentation.
$pres = new Presentation("AnimExample_out.pptx");
$Array = new java_class("java.lang.reflect.Array");
try {
$firstSlide = $pres->getSlides()->get_Item(0);
# Obtient la séquence principale de la diapositive.
$sequence = $firstSlide->getTimeline()->getMainSequence();
# Obtient la première forme sur la diapositive.
$shape = $firstSlide->getShapes()->get_Item(0);
# Obtient tous les effets d'animation appliqués à la forme.
$shapeEffects = $sequence->getEffectsByShape($shape);
if (java_values($Array->getLength($shapeEffects)) > 0) {
echo("La forme " . $shape->getName() . " a " . $Array->getLength($shapeEffects) . " effets d'animation.");
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Modifier les propriétés de timing de l’effet d’animation
Aspose.Slides pour PHP via 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 PowerPoint et les propriétés Effect.Timing :
- La liste déroulante de timing PowerPoint Début correspond à la propriété Effect.Timing.TriggerType .
- La Durée du timing PowerPoint correspond à la propriété Effect.Timing.Duration. La durée d’une animation (en secondes) est le temps total qu’il faut à l’animation pour compléter un cycle.
- La Délai du timing PowerPoint correspond à la propriété Effect.Timing.TriggerDelayTime.
Voici comment modifier 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 PHP démontre l’opération :
# Instancie une classe de présentation qui représente un fichier de présentation.
$pres = new Presentation("AnimExample_out.pptx");
try {
# Obtient la séquence principale de la diapositive.
$sequence = $pres->getSlides()->get_Item(0)->getTimeline()->getMainSequence();
# Obtient le premier effet de la séquence principale.
$effect = $sequence->get_Item(0);
# Modifie le TriggerType de l'effet pour démarrer au clic
$effect->getTiming()->setTriggerType(EffectTriggerType::OnClick);
# Modifie la durée de l'effet
$effect->getTiming()->setDuration(3.0);
# Modifie le TriggerDelayTime de l'effet
$effect->getTiming()->setTriggerDelayTime(0.5);
# Enregistre le fichier PPTX sur disque
$pres->save("AnimExample_changed.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Son de l’effet d’animation
Aspose.Slides fournit ces propriétés pour vous permettre de travailler avec des sons dans des effets d’animation :
Ajouter un son d’effet d’animation
Ce code PHP vous montre comment ajouter un son d’effet d’animation et l’arrêter lorsque le prochain effet commence :
$pres = new Presentation("AnimExample_out.pptx");
try {
# Ajoute de l'audio à la collection audio de la présentation
$Array = new JavaClass("java.lang.reflect.Array");
$Byte = (new JavaClass("java.lang.Byte"))->TYPE;
try {
$dis = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", "sampleaudio.wav"));
$bytes = $Array->newInstance($Byte, $dis->available());
$dis->readFully($bytes);
} finally {
if (!java_is_null($dis)) $dis->close();
}
$effectSound = $pres->getAudios()->addAudio($bytes);
$firstSlide = $pres->getSlides()->get_Item(0);
# Obtient la séquence principale de la diapositive.
$sequence = $firstSlide->getTimeline()->getMainSequence();
# Obtient le premier effet de la séquence principale
$firstEffect = $sequence->get_Item(0);
# Vérifie l'effet pour "Aucun son"
if (java_is_null(!$firstEffect->getStopPreviousSound() && $firstEffect->getSound())) {
# Ajoute le son pour le premier effet
$firstEffect->setSound($effectSound);
}
# Obtient la première séquence interactive de la diapositive.
$interactiveSequence = $firstSlide->getTimeline()->getInteractiveSequences()->get_Item(0);
# Définit le drapeau "Arrêter le son précédent" de l'effet
$interactiveSequence->get_Item(0)->setStopPreviousSound(true);
# Écrit le fichier PPTX sur disque
$pres->save("AnimExample_Sound_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Extraire le son de l’effet d’animation
- Créez une instance de la classe Presentation .
- Obtenez une référence à une diapositive par son index.
- Obtenez la séquence principale d’effets.
- Extraire le setSound(IAudio value) intégré à chaque effet d’animation.
Ce code PHP vous montre comment extraire le son incorporé dans un effet d’animation :
# Instancie une classe de présentation qui représente un fichier de présentation.
$presentation = new Presentation("EffectSound.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
# Obtient la séquence principale de la diapositive.
$sequence = $slide->getTimeline()->getMainSequence();
foreach($sequence as $effect) {
if (java_is_null($effect->getSound())) {
continue;
}
# Extrait le son de l'effet dans un tableau d'octets
$audio = $effect->getSound()->getBinaryData();
}
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
Après l’animation
Aspose.Slides pour PHP via Java vous permet de modifier la propriété Après l’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 l’animation de l’effet PowerPoint correspond à ces propriétés :
- setAfterAnimationType(int value) qui décrit le type après animation :
- Plus de couleurs PowerPoint correspond au type AfterAnimationType::Color ;
- L’élément de liste de PowerPoint Ne pas atténuer correspond au type AfterAnimationType::DoNotDim (type d’animation après défaut) ;
- L’élément Cacher après l’animation de PowerPoint correspond au type AfterAnimationType::HideAfterAnimation ;
- L’élément Masquer au prochain clic de souris de PowerPoint 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 pour un autre, la couleur après animation sera effacée.
Ce code PHP vous montre comment modifier un effet d’animation après :
# Instancie une classe de présentation qui représente un fichier de présentation
$pres = new Presentation("AnimImage_out.pptx");
try {
$firstSlide = $pres->getSlides()->get_Item(0);
# Obtient le premier effet de la séquence principale
$firstEffect = $firstSlide->getTimeline()->getMainSequence()->get_Item(0);
# Change le type d'animation après en couleur
$firstEffect->setAfterAnimationType(AfterAnimationType::Color);
# Définit la couleur d'atténuation après animation
$firstEffect->getAfterAnimationColor()->setColor(java("java.awt.Color")->BLUE);
# Écrit le fichier PPTX sur disque
$pres->save("AnimImage_AfterAnimation.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Animer le texte
Aspose.Slides fournit ces propriétés pour vous permettre de travailler avec le bloc Animer le texte d’un effet d’animation :
- setAnimateTextType(int value) qui décrit un type d’animation du texte de l’effet. Le texte de la forme peut être animé :
- Tout en une 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’effet Animer le 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 d’animation Par paragraphes.
- Définissez de nouvelles valeurs pour les propriétés setAnimateTextType(int value) et setDelayBetweenTextParts(float value) .
- Enregistrez le fichier PPTX modifié.
Ce code PHP démontre l’opération :
# Instancie une classe de présentation qui représente un fichier de présentation.
$pres = new Presentation("AnimTextBox_out.pptx");
try {
$firstSlide = $pres->getSlides()->get_Item(0);
# Obtient le premier effet de la séquence principale
$firstEffect = $firstSlide->getTimeline()->getMainSequence()->get_Item(0);
# Change le type d'animation de texte de l'effet sur "En un seul objet"
$firstEffect->getTextAnimation()->setBuildType(BuildType::AsOneObject);
# Change le type d'animation de texte de l'effet sur "Par mot"
$firstEffect->setAnimateTextType(AnimateTextType::ByWord);
# Définit le délai entre les mots à 20 % de la durée de l'effet
$firstEffect->setDelayBetweenTextParts(20.0);
# Écrit le fichier PPTX sur disque
$pres->save("AnimTextBox_AnimateText.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}