PowerPoint برمجيًا العثور على الرسوم المتحركة/التأثير وحذفها
-
03-10-2019 - |
سؤال
لقد أضفت الرسوم المتحركة برمجيًا (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
لا تنتمي إلى StackOverflow