Question

I ai programmation (VSTO) animations ajouté à la diapositive PowerPoint en utilisant le code suivant

    activeSlide.TimeLine.InteractiveSequences.Add().AddTriggerEffect(
        textBox2,
        MsoAnimEffect.msoAnimEffectFade,
        MsoAnimTriggerType.msoAnimTriggerOnMediaBookmark,
        selectedShape,
        "Bookmark A",
        MsoAnimateByLevel.msoAnimateLevelNone);   

    activeSlide.TimeLine.InteractiveSequences.Add().AddTriggerEffect(
        textBox2,
        MsoAnimEffect.msoAnimEffectFade,
        MsoAnimTriggerType.msoAnimTriggerOnMediaBookmark,
        selectedShape,
        "Bookmark B",
        MsoAnimateByLevel.msoAnimateLevelNone).Exit = MsoTriState.msoTrue;

Alors, comment pourrais-je aller sur la suppression de l'animation sans supprimer textBox2? Est-il possible de traverser à travers les animations et trouver ceux que je dois supprimer qui sont associés à textBox2?

Était-ce utile?

La solution 2

Merci à Shyam Pillai pour la réponse, je l'ai traduit son code vba comme suit:

    private void DeleteAnnimations(Slide slide, Shape shape)
    {
        for (int i = slide.TimeLine.InteractiveSequences.Count; i >= 1; i--)
        {
            Sequence sequence = slide.TimeLine.InteractiveSequences[i];
            for (int x = sequence.Count; x >= 1; x--)
            {
                Effect effect = sequence[x];
                if (effect.Timing.TriggerType == MsoAnimTriggerType.msoAnimTriggerOnMediaBookmark)
                {
                    if (effect.Shape.Name == shape.Name)
                        effect.Delete();
                }
            }
        }
    }

Autres conseils

Pardonnez-moi parce que je n'ai pas PPT 2010 à portée de main (vous devriez noter dans votre question, il est cette version), mais cela devrait vous aider à démarrer dans la bonne direction.

InteractiveSequences est une collection de Sequence objets
objet Sequence est vraiment une collection de Effect objets
objets Effect ont une propriété Shape

foreach (Sequence seq in activeSlide.TimeLine.InteractiveSequences)
  foreach (Effect eff in seq)
    if (eff.Shape == "target shape")
      ...

Je crois qu'il ya un supprimer ou peut-être une fonction de suppression de l'objet lui-même effet.

il est la simple suppression de l'animation sans supprimer zone de texte:

dim osh as shape

set osh = .....

oSh.AnimationSettings.Animate = 0 => deleting the animation of osh 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top