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 Handy (вы должны отметить в вашем вопросе, это эта версия), но это должно запускаться в правильном направлении.
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