Aplicar animaciones de formas en presentaciones en .NET
Las animaciones son efectos visuales que pueden aplicarse a textos, imágenes, formas o gráficos. Dan vida a las presentaciones o a sus componentes.
¿Por qué usar animaciones en presentaciones?
Usando animaciones, puede
- controlar el flujo de información
- resaltar puntos importantes
- aumentar el interés o la participación de su audiencia
- hacer que el contenido sea más fácil de leer, asimilar o procesar
- atraer la atención de sus lectores o espectadores a partes importantes de una presentación
PowerPoint ofrece muchas opciones y herramientas para animaciones y efectos de animación en las categorías de entrada, salida, énfasis y caminos de movimiento.
Animaciones en Aspose.Slides
- Aspose.Slides proporciona las clases y tipos que necesita para trabajar con animaciones bajo el espacio de nombres Aspose.Slides.Animation.
- Aspose.Slides ofrece más de 150 efectos de animación bajo la enumeración EffectType. Estos efectos son esencialmente los mismos (o equivalentes) que se usan en PowerPoint.
Aplicar animación a un TextBox
Aspose.Slides para .NET le permite aplicar animación al texto en una forma.
- Cree una instancia de la clase Presentation.
- Obtenga la referencia de una diapositiva mediante su índice.
- Agregue una
rectangleIAutoShape. - Agregue texto a IAutoShape.TextFrame.
- Obtenga la secuencia principal de efectos.
- Agregue un efecto de animación a IAutoShape.
- Establezca la propiedad TextAnimation.BuildType al valor de la enumeración BuildType.
- Guarde la presentación en disco como un archivo PPTX.
Este código C# le muestra cómo aplicar el efecto Fade a AutoShape y establecer la animación de texto al valor By 1st Level Paragraphs:
// Instancia una clase de presentación que representa un archivo de presentación.
using (Presentation pres = new Presentation())
{
ISlide sld = pres.Slides[0];
// Agrega una nueva AutoShape con texto
IAutoShape autoShape = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);
ITextFrame textFrame = autoShape.TextFrame;
textFrame.Text = "First paragraph \nSecond paragraph \n Third paragraph";
// Obtiene la secuencia principal de la diapositiva.
ISequence sequence = sld.Timeline.MainSequence;
// Agrega efecto de animación Fade a la forma
IEffect effect = sequence.AddEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);
// Anima el texto de la forma por párrafos de primer nivel
effect.TextAnimation.BuildType = BuildType.ByLevelParagraphs1;
// Guarda el archivo PPTX en disco
pres.Save(path + "AnimTextBox_out.pptx", SaveFormat.Pptx);
}
Aplicar animación a un PictureFrame
- Cree una instancia de la clase Presentation.
- Obtenga la referencia de una diapositiva mediante su índice.
- Agregue o obtenga un PictureFrame en la diapositiva.
- Obtenga la secuencia principal de efectos.
- Agregue un efecto de animación a PictureFrame.
- Guarde la presentación en disco como un archivo PPTX.
Este código C# le muestra cómo aplicar el efecto Fly a un marco de imagen:
// Instancia una clase de presentación que representa un archivo de presentación.
using (Presentation pres = new Presentation())
{
// Carga la imagen que se añadirá a la colección de imágenes de la presentación
IImage image = Images.FromFile("aspose-logo.jpg");
IPPImage ppImage = pres.Images.AddImage(image);
image.Dispose();
// Añade un marco de imagen a la diapositiva
IPictureFrame picFrame = pres.Slides[0].Shapes.AddPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, ppImage);
// Obtiene la secuencia principal de la diapositiva.
ISequence sequence = pres.Slides[0].Timeline.MainSequence;
// Añade el efecto de animación Fly desde la izquierda al marco de imagen
IEffect effect = sequence.AddEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);
// Guarda el archivo PPTX en disco
pres.Save("AnimImage_out.pptx", SaveFormat.Pptx);
}
Aplicar animación a una Shape
- Cree una instancia de la clase Presentation.
- Obtenga la referencia de una diapositiva mediante su índice.
- Agregue una
rectangleIAutoShape. - Agregue una
BevelIAutoShape (cuando este objeto se hace clic, se reproduce la animación). - Cree una secuencia de efectos en la forma bevel.
- Cree un
UserPathpersonalizado. - Agregue comandos para moverse al
UserPath. - Guarde la presentación en disco como un archivo PPTX.
Este código C# le muestra cómo aplicar el efecto PathFootball (camino fútbol) a una forma:
// Instancia una clase Presentation que representa un archivo de presentación.
using (Presentation pres = new Presentation())
{
ISlide sld = pres.Slides[0];
// Crea el efecto PathFootball para la forma existente desde cero.
IAutoShape ashp = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);
ashp.AddTextFrame("Animated TextBox");
// Agrega el efecto de animación PathFootball.
pres.Slides[0].Timeline.MainSequence.AddEffect(ashp, EffectType.PathFootball,
EffectSubtype.None, EffectTriggerType.AfterPrevious);
// Crea algún tipo de "botón".
IShape shapeTrigger = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Bevel, 10, 10, 20, 20);
// Crea una secuencia de efectos para el botón.
ISequence seqInter = pres.Slides[0].Timeline.InteractiveSequences.Add(shapeTrigger);
// Crea una ruta de usuario personalizada. Nuestro objeto se moverá solo después de que se haga clic en el botón.
IEffect fxUserPath = seqInter.AddEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);
// Agrega comandos para mover ya que la ruta creada está vacía.
IMotionEffect motionBhv = ((IMotionEffect)fxUserPath.Behaviors[0]);
PointF[] pts = new PointF[1];
pts[0] = new PointF(0.076f, 0.59f);
motionBhv.Path.Add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, true);
pts[0] = new PointF(-0.076f, -0.59f);
motionBhv.Path.Add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, false);
motionBhv.Path.Add(MotionCommandPathType.End, null, MotionPathPointsType.Auto, false);
// Escribe el archivo PPTX en disco
pres.Save("AnimExample_out.pptx", SaveFormat.Pptx);
}
Obtener los efectos de animación aplicados a una Shape
Los siguientes ejemplos le muestran cómo usar el método GetEffectsByShape de la interfaz ISequence para obtener todos los efectos de animación aplicados a una forma.
Ejemplo 1: Obtener los efectos de animación aplicados a una forma en una diapositiva normal
Anteriormente, aprendió cómo agregar efectos de animación a formas en presentaciones de PowerPoint. El siguiente código de ejemplo le muestra cómo obtener los efectos aplicados a la primera forma en la primera diapositiva normal de la presentación AnimExample_out.pptx.
using (Presentation presentation = new Presentation("AnimExample_out.pptx"))
{
ISlide firstSlide = presentation.Slides[0];
// Obtiene la secuencia principal de animación de la diapositiva.
ISequence sequence = firstSlide.Timeline.MainSequence;
// Obtiene la primera forma de la primera diapositiva.
IShape shape = firstSlide.Shapes[0];
// Obtiene los efectos de animación aplicados a la forma.
IEffect[] shapeEffects = sequence.GetEffectsByShape(shape);
if (shapeEffects.Length > 0)
Console.WriteLine($"The shape {shape.Name} has {shapeEffects.Length} animation effects.");
}
Ejemplo 2: Obtener todos los efectos de animación, incluidos los heredados de los marcadores de posición
Si una forma en una diapositiva normal tiene marcadores de posición que están en la diapositiva de diseño y/o maestra, y se han agregado efectos de animación a esos marcadores, entonces todos los efectos de la forma se reproducirán durante la presentación, incluidos los heredados de los marcadores.
Supongamos que tenemos un archivo de presentación PowerPoint sample.pptx con una sola diapositiva que contiene solo una forma de pie de página con el texto “Made with Aspose.Slides” y se ha aplicado el efecto Random Bars a la forma.

Supongamos también que el efecto Split se ha aplicado al marcador de posición del pie de página en la diapositiva layout.

Y finalmente, el efecto Fly In se ha aplicado al marcador de posición del pie de página en la diapositiva master.

El siguiente código de ejemplo le muestra cómo usar el método GetBasePlaceholder de la interfaz IShape para acceder a los marcadores de posición de la forma y obtener los efectos de animación aplicados a la forma de pie de página, incluidos los heredados de los marcadores ubicados en las diapositivas de diseño y maestra.
using (Presentation presentation = new Presentation("sample.pptx"))
{
ISlide slide = presentation.Slides[0];
// Obtiene los efectos de animación de la forma en la diapositiva normal.
IShape shape = slide.Shapes[0];
IEffect[] shapeEffects = slide.Timeline.MainSequence.GetEffectsByShape(shape);
// Obtiene los efectos de animación del marcador de posición en la diapositiva de diseño.
IShape layoutShape = shape.GetBasePlaceholder();
IEffect[] layoutShapeEffects = slide.LayoutSlide.Timeline.MainSequence.GetEffectsByShape(layoutShape);
// Obtiene los efectos de animación del marcador de posición en la diapositiva maestra.
IShape masterShape = layoutShape.GetBasePlaceholder();
IEffect[] masterShapeEffects = slide.LayoutSlide.MasterSlide.Timeline.MainSequence.GetEffectsByShape(masterShape);
Console.WriteLine("Main sequence of shape effects:");
PrintEffects(masterShapeEffects);
PrintEffects(layoutShapeEffects);
PrintEffects(shapeEffects);
}
static void PrintEffects(IEnumerable<IEffect> effects)
{
foreach (IEffect effect in effects)
{
Console.WriteLine($"{effect.Type} {effect.Subtype}");
}
}
Salida:
Main sequence of shape effects:
Fly Bottom
Split VerticalIn
RandomBars Horizontal
Cambiar las propiedades de sincronización del efecto de animación
Aspose.Slides para .NET le permite cambiar las propiedades de sincronización de un efecto de animación.
Esta es la ventana de sincronización de animación y el menú extendido en Microsoft PowerPoint:

Estas son las correspondencias entre la sincronización de PowerPoint y las propiedades Effect.Timing:
- La lista desplegable Start de la sincronización de PowerPoint corresponde a la propiedad Effect.Timing.TriggerType.
- La lista desplegable Duration de la sincronización de PowerPoint corresponde a la propiedad Effect.Timing.Duration. La duración de una animación (en segundos) es el tiempo total que tarda la animación en completar un ciclo.
- La lista desplegable Delay de la sincronización de PowerPoint corresponde a la propiedad Effect.Timing.TriggerDelayTime.
- La lista desplegable Repeat de la sincronización de PowerPoint corresponde a estas propiedades:
- la propiedad Effect.Timing.RepeatCount que describe el número de veces que se repite el efecto;
- la bandera Effect.Timing.RepeatUntilEndSlide que especifica si el efecto se repite hasta el final de la diapositiva;
- la bandera Effect.Timing.RepeatUntilNextClick que especifica si el efecto se repite hasta el siguiente clic.
- La casilla de verificación Rewind when done playing de la sincronización de PowerPoint corresponde a la propiedad Effect.Timing.Rewind.
Así es como cambia las propiedades de sincronización del efecto:
- Aplique o obtenga el efecto de animación.
- Establezca nuevos valores para las propiedades Effect.Timing que necesite.
- Guarde el archivo PPTX modificado.
Este código C# demuestra la operación:
// Instancia una clase de presentación que representa un archivo de presentación.
using (Presentation pres = new Presentation("AnimExample_out.pptx"))
{
// Obtiene la secuencia principal de la diapositiva.
ISequence sequence = pres.Slides[0].Timeline.MainSequence;
// Obtiene el primer efecto de la secuencia principal.
IEffect effect = sequence[0];
// Cambia el TriggerType del efecto para que comience al hacer clic
effect.Timing.TriggerType = EffectTriggerType.OnClick;
// Cambia la duración del efecto
effect.Timing.Duration = 3f;
// Cambia el TriggerDelayTime del efecto
effect.Timing.TriggerDelayTime = 0.5f;
// Si el valor Repeat del efecto es "none"
if (effect.Timing.RepeatCount == 1f)
{
// Cambia el Repeat del efecto a "Until Next Click"
effect.Timing.RepeatUntilNextClick = true;
}
else
{
// Cambia el Repeat del efecto a "Until End of Slide"
effect.Timing.RepeatUntilEndSlide = true;
}
// Activa el Rewind del efecto
effect.Timing.Rewind = true;
// Guarda el archivo PPTX en disco
pres.Save("AnimExample_changed.pptx", SaveFormat.Pptx);
}
Sonido del efecto de animación
Aspose.Slides proporciona estas propiedades para que pueda trabajar con sonidos en los efectos de animación:
Agregar un sonido al efecto de animación
Este código C# le muestra cómo agregar un sonido al efecto de animación y detenerlo cuando comienza el siguiente efecto:
using (Presentation pres = new Presentation("AnimExample_out.pptx"))
{
// Agrega audio a la colección de audio de la presentación
IAudio effectSound = pres.Audios.AddAudio(File.ReadAllBytes("sampleaudio.wav"));
ISlide firstSlide = pres.Slides[0];
// Obtiene la secuencia principal de la diapositiva.
ISequence sequence = firstSlide.Timeline.MainSequence;
// Obtiene el primer efecto de la secuencia principal
IEffect firstEffect = sequence[0];
// Verifica el efecto para "No Sound"
if (!firstEffect.StopPreviousSound && firstEffect.Sound == null)
{
// Agrega sonido al primer efecto
firstEffect.Sound = effectSound;
}
// Obtiene la primera secuencia interactiva de la diapositiva.
ISequence interactiveSequence = firstSlide.Timeline.InteractiveSequences[0];
// Establece la bandera "Stop previous sound" del efecto
interactiveSequence[0].StopPreviousSound = true;
// Escribe el archivo PPTX en disco
pres.Save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
}
Extraer el sonido de un efecto de animación
- Cree una instancia de la clase Presentation.
- Obtenga la referencia de una diapositiva mediante su índice.
- Obtenga la secuencia principal de efectos.
- Extraiga el Sound incrustado en cada efecto de animación.
Este código C# le muestra cómo extraer el sonido incrustado en un efecto de animación:
// Instancia una clase de presentación que representa un archivo de presentación.
using (Presentation presentation = new Presentation("EffectSound.pptx"))
{
ISlide slide = presentation.Slides[0];
// Obtiene la secuencia principal de la diapositiva.
ISequence sequence = slide.Timeline.MainSequence;
foreach (IEffect effect in sequence)
{
if (effect.Sound == null)
continue;
// Extrae el sonido del efecto en un arreglo de bytes
byte[] audio = effect.Sound.BinaryData;
}
}
Después de la animación
Aspose.Slides para .NET le permite cambiar la propiedad After animation de un efecto de animación.
Esta es la ventana del efecto de animación y el menú extendido en Microsoft PowerPoint:

La lista desplegable After animation de PowerPoint corresponde a estas propiedades:
- la propiedad IEffect.AfterAnimationType que describe el tipo de After animation :
- More Colors de PowerPoint corresponde al tipo AfterAnimationType.Color;
- Don’t Dim de PowerPoint corresponde al tipo AfterAnimationType.DoNotDim (tipo predeterminado);
- Hide After Animation de PowerPoint corresponde al tipo AfterAnimationType.HideAfterAnimation;
- Hide on Next Mouse Click de PowerPoint corresponde al tipo AfterAnimationType.HideOnNextMouseClick;
- la propiedad IEffect.AfterAnimationColor que define un formato de color After animation. Esta propiedad funciona junto con el tipo AfterAnimationType.Color. Si cambia el tipo a otro, el color After animation se borrará.
Este código C# le muestra cómo cambiar un efecto After animation:
// Instancia una clase de presentación que representa un archivo de presentación
using (Presentation pres = new Presentation("AnimImage_out.pptx"))
{
ISlide firstSlide = pres.Slides[0];
// Obtiene el primer efecto de la secuencia principal
IEffect firstEffect = firstSlide.Timeline.MainSequence[0];
// Cambia el tipo de After animation a Color
firstEffect.AfterAnimationType = AfterAnimationType.Color;
// Establece el color de atenuación de la animación posterior
firstEffect.AfterAnimationColor.Color = Color.AliceBlue;
// Guarda el archivo PPTX en disco
pres.Save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
}
Animar texto
Aspose.Slides proporciona estas propiedades para que pueda trabajar con el bloque Animate text de un efecto de animación:
- IEffect.AnimateTextType que describe el tipo de animación de texto del efecto. El texto de la forma puede animarse:
- Todo a la vez (AnimateTextType.AllAtOnce tipo)
- Por palabra (AnimateTextType.ByWord tipo)
- Por letra (AnimateTextType.ByLetter tipo)
- IEffect.DelayBetweenTextParts establece un retraso entre las partes de texto animadas (palabras o letras). Un valor positivo especifica el porcentaje de duración del efecto. Un valor negativo especifica el retraso en segundos.
Así es como puede cambiar las propiedades Animate text del efecto:
- Aplique o obtenga el efecto de animación.
- Establezca la propiedad IEffect.TextAnimation.BuildType a BuildType.AsOneObject para desactivar el modo de animación By Paragraphs.
- Establezca nuevos valores para las propiedades IEffect.AnimateTextType y IEffect.DelayBetweenTextParts.
- Guarde el archivo PPTX modificado.
Este código C# demuestra la operación:
// Instancia una clase de presentación que representa un archivo de presentación.
using (Presentation pres = new Presentation("AnimTextBox_out.pptx"))
{
ISlide firstSlide = pres.Slides[0];
// Obtiene el primer efecto de la secuencia principal
IEffect firstEffect = firstSlide.Timeline.MainSequence[0];
// Cambia el tipo de animación de texto del efecto a "As One Object"
firstEffect.TextAnimation.BuildType = BuildType.AsOneObject;
// Cambia el tipo de animación de texto del efecto a "By word"
firstEffect.AnimateTextType = AnimateTextType.ByWord;
// Establece el retraso entre palabras al 20% de la duración del efecto
firstEffect.DelayBetweenTextParts = 20f;
// Escribe el archivo PPTX en disco
pres.Save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
}
Preguntas frecuentes
¿Cómo puedo asegurar que las animaciones se conserven al publicar la presentación en la web?
Exportar a HTML5 y habilite las opciones responsables de shape y transition animaciones. El HTML simple no reproduce animaciones de diapositivas, mientras que HTML5 sí.
¿Cómo afecta cambiar el orden Z (orden de capas) de las formas a la animación?
El orden de animación y dibujo son independientes: un efecto controla el tiempo y tipo de aparición/desaparición, mientras que el z-order determina qué cubre a qué. El resultado visible se define por su combinación. (Este es el comportamiento general de PowerPoint; el modelo de efectos y formas de Aspose.Slides sigue la misma lógica.)
¿Existen limitaciones al convertir animaciones a video para ciertos efectos?
En general, las animaciones son compatibles, pero casos raros o efectos específicos pueden renderizarse de manera diferente. Se recomienda probar con los efectos que use y con la versión de la biblioteca.