Animation de Forme

Les animations sont des effets visuels qui peuvent être appliqués à des textes, images, formes ou graphes. Elles donnent vie aux présentations ou à ses constituants.

Pourquoi Utiliser des Animations dans les Présentations ?

En utilisant des animations, vous pouvez

  • contrôler le flux d’informations
  • souligner les points importants
  • accroître l’intérêt ou la participation de votre public
  • 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 offre de nombreuses options et outils pour les animations et les effets d’animation dans les catégories entrée, sortie, accentuation et chemins de mouvement.

Animations dans Aspose.Slides

  • Aspose.Slides fournit les classes et types nécessaires pour travailler avec des animations sous le namespace 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 à un TextBox

Aspose.Slides pour C++ vous permet d’appliquer une animation au texte d’une forme.

  1. Créez une instance de la classe Presentation.
  2. Obtenez la référence d’une diapositive par son index.
  3. Ajoutez une rectangle IAutoShape.
  4. Ajoutez du texte à IAutoShape.TextFrame.
  5. Obtenez une séquence principale d’effets.
  6. Ajoutez un effet d’animation à IAutoShape.
  7. Définissez la propriété TextAnimation.BuildType à la valeur de l'énumération BuildType.
  8. Écrivez la présentation sur le disque sous forme de fichier PPTX.

Ce code C++ vous montre comment appliquer l’effet Fade à un AutoShape et définir l’animation du texte sur la valeur By 1st Level Paragraphs :

// Instancie une classe de présentation qui représente un fichier de présentation.
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();

System::SharedPtr<ISlide> sld = pres->get_Slides()->idx_get(0);

// Ajoute un nouvel AutoShape avec du texte
System::SharedPtr<IAutoShape> autoShape =
    sld->get_Shapes()->AddAutoShape(Aspose::Slides::ShapeType::Rectangle, 20.0f, 20.0f, 150.0f, 100.0f);

System::SharedPtr<ITextFrame> textFrame = autoShape->get_TextFrame();
textFrame->set_Text(u"Premier paragraphe \nDeuxième paragraphe \n Troisième paragraphe");

// Obtient la séquence principale de la diapositive.
System::SharedPtr<ISequence> sequence = sld->get_Timeline()->get_MainSequence();

// Ajoute un effet d'animation Fade à la forme
System::SharedPtr<IEffect> effect = sequence->AddEffect(autoShape, Aspose::Slides::Animation::EffectType::Fade,
    Aspose::Slides::Animation::EffectSubtype::None, Aspose::Slides::Animation::EffectTriggerType::OnClick);

// Anime le texte de la forme par les paragraphes de 1er niveau
effect->get_TextAnimation()->set_BuildType(Aspose::Slides::Animation::BuildType::ByLevelParagraphs1);

// Sauvegarde le fichier PPTX sur le disque
pres->Save(path + u"AnimText_out.pptx", Aspose::Slides::Export::SaveFormat::Pptx);

Appliquer une Animation à un PictureFrame

  1. Créez une instance de la classe Presentation.
  2. Obtenez la référence d’une diapositive par son index.
  3. Ajoutez ou obtenez un PictureFrame sur la diapositive.
  4. Obtenez la séquence principale d’effets.
  5. Ajoutez un effet d’animation au PictureFrame.
  6. Écrivez la présentation sur le disque sous forme de fichier PPTX.

Ce code C++ 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.
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();

// Charge une image à ajouter dans la collection d'images de la présentation
System::SharedPtr<IImage> img = Images::FromFile(u"aspose-logo.jpg");
System::SharedPtr<IPPImage> image = pres->get_Images()->AddImage(img);

// Ajoute un cadre d'image à la diapositive
System::SharedPtr<IPictureFrame> picFrame =
    pres->get_Slides()->idx_get(0)->get_Shapes()->AddPictureFrame(Aspose::Slides::ShapeType::Rectangle, 50.0f, 50.0f, 100.0f, 100.0f, image);

// Obtient la séquence principale de la diapositive.
System::SharedPtr<ISequence> sequence = pres->get_Slides()->idx_get(0)->get_Timeline()->get_MainSequence();

// Ajoute un effet d'animation Fly de la gauche au cadre d'image
System::SharedPtr<IEffect> effect = sequence->AddEffect(picFrame, Aspose::Slides::Animation::EffectType::Fly,
    Aspose::Slides::Animation::EffectSubtype::Left, Aspose::Slides::Animation::EffectTriggerType::OnClick);

// Sauvegarde le fichier PPTX sur le disque
pres->Save(path + u"AnimImage_out.pptx", Aspose::Slides::Export::SaveFormat::Pptx);

Appliquer une Animation à une Forme

  1. Créez une instance de la classe Presentation.
  2. Obtenez la référence d’une diapositive par son index.
  3. Ajoutez une rectangle IAutoShape.
  4. Ajoutez un Bevel IAutoShape (lorsque cet objet est cliqué, l’animation est jouée).
  5. Créez une séquence d’effets sur la forme biseautée.
  6. Créez un UserPath personnalisé.
  7. Ajoutez des commandes pour vous déplacer vers le UserPath.
  8. Écrivez la présentation sur le disque sous forme de fichier PPTX.

Ce code C++ vous montre comment appliquer l’effet PathFootball (chemin de football) à une forme :

	// Chemin du répertoire du document.
	const String outPath = u"../out/AnimationsOnShapes_out.pptx";
	const String templatePath = u"../templates/ConnectorLineAngle.pptx";

	// Charge la présentation
	SharedPtr<Presentation> pres = MakeObject<Presentation>();

	// Accède à la première diapositive
	SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

	// Accède à la collection de formes pour la diapositive sélectionnée
	SharedPtr<IShapeCollection> shapes = slide->get_Shapes();

	// Crée un effet PathFootball pour une forme existante à partir de zéro.
	SharedPtr<IAutoShape> ashp = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 150, 150, 250, 25);

	ashp->AddTextFrame(u"Boîte de Texte Animée");

	// Ajoute l'effet d'animation PathFootBall
	slide->get_Timeline()->get_MainSequence()->AddEffect(ashp, EffectType::PathFootball,
		EffectSubtype::None, EffectTriggerType::AfterPrevious);

	// Crée une sorte de "bouton".
	SharedPtr<IAutoShape> shapeTrigger = slide->get_Shapes()->AddAutoShape(ShapeType::Bevel, 10, 10, 20, 20);

	// Crée une séquence d'effets pour ce bouton.
	SharedPtr<ISequence> seqInter = slide->get_Timeline()->get_InteractiveSequences()->Add(shapeTrigger);
	
	 // Crée un chemin utilisateur personnalisé. Notre objet ne sera déplacé qu'après le clic sur le bouton.
	SharedPtr<IEffect> fxUserPath = seqInter->AddEffect(ashp, EffectType::PathUser, EffectSubtype::None, EffectTriggerType::OnClick);

	// Ajoute des commandes pour se déplacer puisque le chemin créé est vide.
	 SharedPtr<MotionEffect> motionBhv = ExplicitCast<MotionEffect>(fxUserPath->get_Behaviors()->idx_get(0));

	 //SharedPtr<PointF> point = MakeObject<PointF >(0.076, 0.59);
	 const PointF point = PointF (0.076, 0.59);
	 System::ArrayPtr<PointF> pts = System::MakeObject<System::Array<PointF>>(1, point);
	 motionBhv->get_Path()->Add(MotionCommandPathType::LineTo, pts, MotionPathPointsType::Auto, true);
	 
	 //PointF point2[1] = { -0.076, -0.59 };
	const  PointF point2 = PointF(-0.076, -0.59 );

	 System::ArrayPtr<PointF> pts2 = System::MakeObject<System::Array<PointF>>(1, point2);
	 motionBhv->get_Path()->Add(MotionCommandPathType::LineTo, pts2, MotionPathPointsType::Auto, false);
	 
	 motionBhv->get_Path()->Add(MotionCommandPathType::End, nullptr, MotionPathPointsType::Auto, false);
	 
	 //Écrit le fichier PPTX sur disque
	 pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

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 C++ 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.
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"AnimExample_out.pptx");

System::SharedPtr<ISlide> firstSlide = pres->get_Slides()->idx_get(0);

// Obtient la séquence principale de la diapositive.
System::SharedPtr<ISequence> sequence = firstSlide->get_Timeline()->get_MainSequence();

// Obtient la première forme sur la diapositive.
System::SharedPtr<IShape> shape = firstSlide->get_Shapes()->idx_get(0);

// Obtient tous les effets d'animation appliqués à la forme.
System::ArrayPtr<System::SharedPtr<IEffect>> shapeEffects = sequence->GetEffectsByShape(shape);

if (shapeEffects->get_Length() > 0)
{
    System::Console::WriteLine(System::String(u"La forme ") + shape->get_Name() + u" a " + shapeEffects->get_Length() + u" effets d'animation.");
}

Modifier les Propriétés de Temporisation de l’Effet d’Animation

Aspose.Slides pour C++ vous permet de changer les propriétés de Temporisation d’un effet d’animation.

Voici le panneau de temporisation d’animation dans Microsoft PowerPoint :

example1_image

Voici les correspondances entre la Temporisation PowerPoint et les propriétés Effect.Timing :

  • La liste déroulante PowerPoint Timing Début correspond à la propriété Effect.Timing.TriggerType.
  • La Durée de la temporisation PowerPoint correspond à la propriété Effect.Timing.Duration. La durée d’une animation (en secondes) est le temps total qu’il faut pour que l’animation complète un cycle.
  • Le Délai de la temporisation PowerPoint correspond à la propriété Effect.Timing.TriggerDelayTime.

Voici comment vous pouvez modifier les propriétés de Timing de l’Effet :

  1. Appliquez ou obtenez l’effet d’animation.
  2. Définissez de nouvelles valeurs pour les propriétés Effect.Timing dont vous avez besoin.
  3. Sauvegardez le fichier PPTX modifié.

Ce code C++ démontre l’opération :

// Instancie une classe de présentation qui représente un fichier de présentation.
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"AnimExample_out.pptx");

// Obtient la séquence principale de la diapositive.
System::SharedPtr<ISequence> sequence = pres->get_Slides()->idx_get(0)->get_Timeline()->get_MainSequence();

// Obtient le premier effet de la séquence principale.
System::SharedPtr<IEffect> effect = sequence->idx_get(0);

// Change le TriggerType de l'effet pour commencer au clic
effect->get_Timing()->set_TriggerType(Aspose::Slides::Animation::EffectTriggerType::OnClick);

// Change la Durée de l'effet
effect->get_Timing()->set_Duration(3.f);

// Change le TriggerDelayTime de l'effet
effect->get_Timing()->set_TriggerDelayTime(0.5f);

// Sauvegarde le fichier PPTX sur le disque
pres->Save(u"AnimExample_changed.pptx", Aspose::Slides::Export::SaveFormat::Pptx);

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 un Son à l’Effet d’Animation

Ce code C++ vous montre comment ajouter un son d’effet d’animation et l’arrêter lorsque le prochain effet commence :

System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"AnimExample_out.pptx");

// Ajoute de l'audio à la collection audio de la présentation
System::SharedPtr<IAudio> effectSound = pres->get_Audios()->AddAudio(System::IO::File::ReadAllBytes(u"sampleaudio.wav"));
System::SharedPtr<ISlide> firstSlide = pres->get_Slide(0);

// Obtient la séquence principale de la diapositive.
System::SharedPtr<ISequence> sequence = firstSlide->get_Timeline()->get_MainSequence();

// Obtient le premier effet de la séquence principale
System::SharedPtr<IEffect> firstEffect = sequence->idx_get(0);

// Vérifie si l'effet n'a pas "Pas de Son"
if (!firstEffect->get_StopPreviousSound() && firstEffect->get_Sound() == nullptr)
{
    // Ajoute du son pour le premier effet
    firstEffect->set_Sound(effectSound);
}

// Obtient la première séquence interactive de la diapositive.
System::SharedPtr<ISequence> interactiveSequence = firstSlide->get_Timeline()->get_InteractiveSequence(0);

// Définit le drapeau "Arrêter le son précédent" de l'effet
interactiveSequence->idx_get(0)->set_StopPreviousSound(true);

// Écrit le fichier PPTX sur le disque
pres->Save(u"AnimExample_Sound_out.pptx", SaveFormat::Pptx);

Extraire le Son de l’Effet d’Animation

  1. Créez une instance de la classe Presentation .
  2. Obtenez la référence d’une diapositive par son index.
  3. Obtenez la séquence principale d’effets.
  4. Extrayez le set_Sound() intégré à chaque effet d’animation.

Ce code C++ vous montre comment extraire le son intégré dans un effet d’animation :

// Instancie une classe de présentation qui représente un fichier de présentation.
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"EffectSound.pptx");
System::SharedPtr<ISlide> slide = pres->get_Slide(0);

// Obtient la séquence principale de la diapositive.
System::SharedPtr<ISequence> sequence = slide->get_Timeline()->get_MainSequence();

for (auto&& effect : sequence)
{
    System::SharedPtr<IAudio> sound = effect->get_Sound();

    if (sound == nullptr)
        continue;

    auto audio = sound->get_BinaryData();
}

Après l’Animation

Aspose.Slides pour C++ vous permet de changer la propriété Après l’animation d’un effet d’animation.

Voici le panneau des effets d’animation et le menu étendu dans Microsoft PowerPoint :

example1_image

La liste déroulante PowerPoint Effect Après animation correspond à ces propriétés :

Ce code C++ vous montre comment changer un effet après l’animation :

// Instancie une classe de présentation qui représente un fichier de présentation
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"AnimImage_out.pptx");
System::SharedPtr<ISlide> firstSlide = pres->get_Slide(0);

// Obtient le premier effet de la séquence principale
System::SharedPtr<IEffect> firstEffect = firstSlide->get_Timeline()->get_MainSequence()->idx_get(0);

// Change le type d'animation après en couleur
firstEffect->set_AfterAnimationType(AfterAnimationType::Color);

// Définit la couleur d'atténuation après l'animation
firstEffect->get_AfterAnimationColor()->set_Color(System::Drawing::Color::get_AliceBlue());

// Écrit le fichier PPTX sur le disque
pres->Save(u"AnimImage_AfterAnimation.pptx", SaveFormat::Pptx);

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 :

Voici comment vous pouvez changer les propriétés d’animation de l’effet de texte :

  1. Appliquez ou obtenez l’effet d’animation.
  2. Définissez la propriété set_BuildType() à la valeur BuildType.AsOneObject pour désactiver le mode d’animation Par Paragraphes.
  3. Définissez de nouvelles valeurs pour les propriétés set_AnimateTextType() et set_DelayBetweenTextParts() .
  4. Sauvegardez le fichier PPTX modifié.

Ce code C++ démontre l’opération :

// Instancie une classe de présentation qui représente un fichier de présentation.
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"AnimTextBox_out.pptx");
System::SharedPtr<ISlide> firstSlide = pres->get_Slide(0);

// Obtient le premier effet de la séquence principale
System::SharedPtr<IEffect> firstEffect = firstSlide->get_Timeline()->get_MainSequence()->idx_get(0);

// Change le type d'animation du texte de l'effet à "En Un Seul Objet"
firstEffect->get_TextAnimation()->set_BuildType(BuildType::AsOneObject);

// Change le type d'animation du texte de l'effet à "Par mot"
firstEffect->set_AnimateTextType(AnimateTextType::ByWord);

// Définit le délai entre les mots à 20% de la durée de l'effet
firstEffect->set_DelayBetweenTextParts(20.0f);

// Écrit le fichier PPTX sur le disque
pres->Save(u"AnimTextBox_AnimateText.pptx", SaveFormat::Pptx);