PowerPoint برمجيًا العثور على الرسوم المتحركة/التأثير وحذفها

StackOverflow https://stackoverflow.com/questions/3730922

سؤال

لقد أضفت الرسوم المتحركة برمجيًا (VSTO) إلى شريحة PowerPoint باستخدام الكود التالي

    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;

إذن كيف يمكنني حذف الرسوم المتحركة دون حذف textBox2؟ هل هناك طريقة لاجتياز الرسوم المتحركة والعثور على تلك التي أحتاج إلى حذفها والتي ترتبط بها textBox2?

هل كانت مفيدة؟

المحلول 2

بفضل Shyam Pillai على الإجابة ، قمت بترجمة رمز VBA على النحو التالي:

    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();
                }
            }
        }
    }

نصائح أخرى

سامحني لأنني لا أملك PPT 2010 في متناول يدي (يجب أن نلاحظ في سؤالك أنه هذا الإصدار) ولكن هذا يجب أن يبدأ في الاتجاه الصحيح.

InteractiveSequences هي مجموعة من Sequence أشياء
Sequence الكائن هو حقا مجموعة من Effect أشياء
Effect الكائنات لها أ Shape منشأه

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

أعتقد أن هناك عملية إزالة أو ربما حذف لكائن التأثير نفسه.

إنه ببساطة حذف الرسوم المتحركة دون حذف مربع النص:

dim osh as shape

set osh = .....

oSh.AnimationSettings.Animate = 0 => deleting the animation of osh 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top