PowerPoint mediante programación encontrar y eliminar animación / efecto
-
03-10-2019 - |
Pregunta
Tengo programación (VSTO) animaciones añadido a la diapositiva de PowerPoint utilizando el siguiente código
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;
Entonces, ¿cómo hago para borrar la animación sin borrar textBox2
? ¿Hay una manera de recorrer a través de las animaciones y encontrar los que necesito para eliminar las cuales están asociadas con textBox2
?
Solución 2
Gracias a Shyam Pillai para la respuesta, que traducen su código VBA de la siguiente manera:
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();
}
}
}
}
Otros consejos
Perdóname porque yo no tengo PPT 2010 práctico (se debe tener en cuenta en su pregunta es que la versión), pero esto debe empezar en la dirección correcta.
InteractiveSequences
es una colección de objetos Sequence
Sequence
objeto es en realidad una colección de objetos Effect
Effect
objetos tienen una propiedad Shape
foreach (Sequence seq in activeSlide.TimeLine.InteractiveSequences)
foreach (Effect eff in seq)
if (eff.Shape == "target shape")
...
Creo que hay una remove o tal vez una función de eliminación para el propio objeto de efecto.
es simplemente borrar la animación sin borrar cuadro de texto:
dim osh as shape
set osh = .....
oSh.AnimationSettings.Animate = 0 => deleting the animation of osh