Анимация форм

Анимации — это визуальные эффекты, которые можно применять к текстам, изображениям, формам или диаграммам. Они оживляют презентации или их элементы.

Почему стоит использовать анимации в презентациях?

Используя анимации, вы можете

  • контролировать поток информации
  • подчеркивать важные моменты
  • увеличивать интерес или участие в вашей аудитории
  • облегчать чтение, усвоение или обработку контента
  • привлекать внимание ваших читателей или зрителей к важным частям презентации

PowerPoint предоставляет множество опций и инструментов для анимаций и эффектов анимации в категориях вход, выход, акцент и движение по пути.

Анимации в Aspose.Slides

  • Aspose.Slides предоставляет классы и типы, которые вам нужны для работы с анимациями в пространстве имен Aspose.Slides.Animation,
  • Aspose.Slides предоставляет более 150 эффектов анимации в перечислении EffectType. Эти эффекты по сути такие же (или эквивалентные), как эффекты, используемые в PowerPoint.

Применение анимации к TextBox

Aspose.Slides для .NET позволяет применять анимацию к тексту в форме.

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд через его индекс.
  3. Добавьте rectangle IAutoShape.
  4. Добавьте текст в IAutoShape.TextFrame.
  5. Получите основную последовательность эффектов.
  6. Добавьте эффект анимации к IAutoShape.
  7. Установите свойство TextAnimation.BuildType на значение из перечисления BuildType.
  8. Запишите презентацию на диск в виде файла PPTX.

Этот код на C# показывает, как применить эффект Fade к AutoShape и установить анимацию текста на значение По 1-му уровню абзацев:

// Создает экземпляр класса презентации, который представляет собой файл презентации.
using (Presentation pres = new Presentation())
{
    ISlide sld = pres.Slides[0];
    
    // Добавляет новуюAutoShape с текстом
    IAutoShape autoShape = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);

    ITextFrame textFrame = autoShape.TextFrame;
    textFrame.Text = "Первый абзац \nВторой абзац \nТретий абзац";

    // Получает основную последовательность слайда.
    ISequence sequence = sld.Timeline.MainSequence;

    // Добавляет эффект анимации Fade к форме
    IEffect effect = sequence.AddEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);

    // Анимирует текст формы по 1-му уровню абзацев
    effect.TextAnimation.BuildType = BuildType.ByLevelParagraphs1;

    // Сохраняет файл PPTX на диск
    pres.Save(path + "AnimTextBox_out.pptx", SaveFormat.Pptx);
}

Применение анимации к PictureFrame

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд через его индекс.
  3. Добавьте или получите PictureFrame на слайде.
  4. Получите основную последовательность эффектов.
  5. Добавьте эффект анимации к PictureFrame.
  6. Запишите презентацию на диск в виде файла PPTX.

Этот код на C# показывает, как применить эффект Fly к рамке изображения:

// Создает экземпляр класса презентации, который представляет собой файл презентации.
using (Presentation pres = new Presentation())
{
    // Загружает изображение, которое будет добавлено в коллекцию изображений презентации
    Image img = new Bitmap("aspose-logo.jpg");
    IPPImage image = pres.Images.AddImage(img);

    // Добавляет рамку изображения на слайд
    IPictureFrame picFrame = pres.Slides[0].Shapes.AddPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, image);

    // Получает основную последовательность слайда.
    ISequence sequence = pres.Slides[0].Timeline.MainSequence;

    // Добавляет эффект анимации Fly from Left к рамке изображения
    IEffect effect = sequence.AddEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);

    // Сохраняет файл PPTX на диск
    pres.Save(path + "AnimImage_out.pptx", SaveFormat.Pptx);
}

Применение анимации к форме

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд через его индекс.
  3. Добавьте rectangle IAutoShape.
  4. Добавьте Bevel IAutoShape (когда на этот объект нажимают, анимация запускается).
  5. Создайте последовательность эффектов на форме Bevel.
  6. Создайте пользовательский UserPath.
  7. Добавьте команды для перемещения к UserPath.
  8. Запишите презентацию на диск в виде файла PPTX.

Этот код на C# показывает, как применить эффект PathFootball (путь футбольного мяча) к форме:

// Создает экземпляр класса Presentation, который представляет собой файл презентации.
using (Presentation pres = new Presentation())
{
    ISlide sld = pres.Slides[0];

    // Создает эффект PathFootball для существующей формы с нуля.
    IAutoShape ashp = sld.Shapes.AddAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);

    ashp.AddTextFrame("Анимированный TextBox");

    // Добавляет эффект анимации PathFootBall.
    pres.Slides[0].Timeline.MainSequence.AddEffect(ashp, EffectType.PathFootball,
                           EffectSubtype.None, EffectTriggerType.AfterPrevious);

    // Создает некий "кнопку".
    IShape shapeTrigger = pres.Slides[0].Shapes.AddAutoShape(ShapeType.Bevel, 10, 10, 20, 20);

    // Создает последовательность эффектов для кнопки.
    ISequence seqInter = pres.Slides[0].Timeline.InteractiveSequences.Add(shapeTrigger);

    // Создает пользовательский маршрут. Наш объект будет перемещен только после нажатия кнопки.
    IEffect fxUserPath = seqInter.AddEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);

    // Добавляет команды для перемещения, так как созданный путь пуст.
    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);

    // Записывает файл PPTX на диск
    pres.Save("AnimExample_out.pptx", SaveFormat.Pptx);
}

Получение эффектов анимации, примененных к форме

Вы можете решить выяснить все эффекты анимации, примененные к одной форме.

Этот код на C# показывает, как получить все эффекты, примененные к конкретной форме:

// Создает экземпляр класса презентации, который представляет собой файл презентации.
using (Presentation pres = new Presentation("AnimExample_out.pptx"))
{
    ISlide firstSlide = pres.Slides[0];

    // Получает основную последовательность слайда.
    ISequence sequence = firstSlide.Timeline.MainSequence;

    // Получает первую форму на слайде.
    IShape shape = firstSlide.Shapes[0];

    // Получает все эффекты анимации, примененные к форме.
    IEffect[] shapeEffects = sequence.GetEffectsByShape(shape);

    if (shapeEffects.Length > 0)
        Console.WriteLine("Форма " + shape.Name + " имеет " + shapeEffects.Length + " эффектов анимации.");
}

Изменение временных свойств эффекта анимации

Aspose.Slides для .NET позволяет изменять временные свойства эффекта анимации.

Это панель времени анимации и расширенное меню в Microsoft PowerPoint:

example1_image

Это соответствия между временными параметрами PowerPoint и свойствами Effect.Timing:

  • Выпадающий список PowerPoint Timing Start соответствует свойству Effect.Timing.TriggerType.
  • Время PowerPoint Timing Duration соответствует свойству Effect.Timing.Duration. Продолжительность анимации (в секундах) — это общее время, которое требуется анимации для завершения одного цикла.
  • Время задержки PowerPoint Timing Delay соответствует свойству Effect.Timing.TriggerDelayTime.
  • Выпадающий список PowerPoint Timing Repeat соответствует следующим свойствам:
    • Свойство Effect.Timing.RepeatCount, которое описывает количество раз, которое эффект повторяется;
    • Флаг Effect.Timing.RepeatUntilEndSlide, который указывает, будет ли эффект повторяться до конца слайда;
    • Флаг Effect.Timing.RepeatUntilNextClick, который указывает, будет ли эффект повторяться до следующего щелчка.
  • Флажок PowerPoint Timing Rewind when done playing соответствует свойству Effect.Timing.Rewind.

Вот как вы можете изменить свойства времени эффекта:

  1. Примените или получите эффект анимации.
  2. Установите новые значения для нужных вам свойств Effect.Timing.
  3. Сохраните измененный файл PPTX.

Этот код на C# демонстрирует операцию:

// Создает экземпляр класса презентации, который представляет собой файл презентации.
using (Presentation pres = new Presentation("AnimExample_out.pptx"))
{
    // Получает основную последовательность слайда.
    ISequence sequence = pres.Slides[0].Timeline.MainSequence;

    // Получает первый эффект главной последовательности.
    IEffect effect = sequence[0];

    // Изменяет тип триггера эффекта на запуск по щелчку
    effect.Timing.TriggerType = EffectTriggerType.OnClick;

    // Изменяет продолжительность эффекта
    effect.Timing.Duration = 3f;

    // Изменяет время задержки триггера эффекта
    effect.Timing.TriggerDelayTime = 0.5f;

    // Если значение повторения эффекта "none"
    if (effect.Timing.RepeatCount == 1f)
    {
        // Изменяет повторение эффекта на "Until Next Click"
        effect.Timing.RepeatUntilNextClick = true;
    }
    else
    {
        // Изменяет повторение эффекта на "Until End of Slide"
        effect.Timing.RepeatUntilEndSlide = true;
    }

    // Включает перемотку эффекта
    effect.Timing.Rewind = true;
    
    // Сохраняет файл PPTX на диск
    pres.Save("AnimExample_changed.pptx", SaveFormat.Pptx);
}

Звук эффекта анимации

Aspose.Slides предоставляет эти свойства, чтобы вы могли работать со звуками в эффектах анимации:

Добавление звука эффекта анимации

Этот код на C# показывает, как добавить звук эффекта анимации и остановить его, когда начинается следующий эффект:

using (Presentation pres = new Presentation("AnimExample_out.pptx"))
{
	// Добавляет аудио в коллекцию аудио презентации
	IAudio effectSound = pres.Audios.AddAudio(File.ReadAllBytes("sampleaudio.wav"));

	ISlide firstSlide = pres.Slides[0];

	// Получает основную последовательность слайда.
	ISequence sequence = firstSlide.Timeline.MainSequence;

	// Получает первый эффект главной последовательности
	IEffect firstEffect = sequence[0];

	// Проверяет эффект на "Без звука"
	if (!firstEffect.StopPreviousSound && firstEffect.Sound == null)
	{
		// Добавляет звук для первого эффекта
		firstEffect.Sound = effectSound;
	}

	// Получает первую интерактивную последовательность слайда.
	ISequence interactiveSequence = firstSlide.Timeline.InteractiveSequences[0];

	// Устанавливает флаг эффекта "Остановить предыдущий звук"
	interactiveSequence[0].StopPreviousSound = true;

	// Записывает файл PPTX на диск
	pres.Save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
}

Извлечение звука эффекта анимации

  1. Создайте экземпляр класса Presentation .
  2. Получите ссылку на слайд через его индекс.
  3. Получите основную последовательность эффектов.
  4. Извлеките звук , встроенный в каждый эффект анимации.

Этот код на C# показывает, как извлечь звук, встроенный в эффект анимации:

// Создает экземпляр класса презентации, который представляет собой файл презентации.
using (Presentation presentation = new Presentation("EffectSound.pptx"))
{
    ISlide slide = presentation.Slides[0];

    // Получает основную последовательность слайда.
    ISequence sequence = slide.Timeline.MainSequence;

    foreach (IEffect effect in sequence)
    {
        if (effect.Sound == null)
            continue;

        // Извлекает звук эффекта в массив байтов
        byte[] audio = effect.Sound.BinaryData;
    }
}

После анимации

Aspose.Slides для .NET позволяет вам изменять свойства после анимации эффекта анимации.

Это панель эффекта анимации и расширенное меню в Microsoft PowerPoint:

example1_image

Выпадающий список PowerPoint Effect After animation соответствует следующим свойствам:

  • Свойство IEffect.AfterAnimationType , которое описывает тип после анимации :
  • Свойство IEffect.AfterAnimationColor , которое определяет формат цвета после анимации. Это свойство работает в сочетании с типом AfterAnimationType.Color. Если вы измените тип на другой, цвет после анимации будет очищен.

Этот код на C# показывает, как изменить эффект после анимации:

// Создает экземпляр класса презентации, который представляет собой файл презентации
using (Presentation pres = new Presentation("AnimImage_out.pptx"))
{
    ISlide firstSlide = pres.Slides[0];

    // Получает первый эффект главной последовательности
    IEffect firstEffect = firstSlide.Timeline.MainSequence[0];

    // Изменяет тип эффекта после анимации на цвет
    firstEffect.AfterAnimationType = AfterAnimationType.Color;

    // Устанавливает цвет затемнения после анимации
    firstEffect.AfterAnimationColor.Color = Color.AliceBlue;

    // Записывает файл PPTX на диск
    pres.Save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
}

Анимация текста

Aspose.Slides предоставляет эти свойства, чтобы позволить вам работать с блоком Анимация текста эффекта анимации:

  • IEffect.AnimateTextType , который описывает тип анимации текста эффекта. Текст формы может быть анимирован:
  • IEffect.DelayBetweenTextParts устанавливает задержку между анимированными частями текста (словами или буквами). Положительное значение указывает процент от продолжительности эффекта. Отрицательное значение указывает задержку в секундах.

Вот как вы можете изменить свойства анимации эффекта текста:

  1. Примените или получите эффект анимации.
  2. Установите свойство IEffect.TextAnimation.BuildType на значение BuildType.AsOneObject , чтобы отключить режим анимации По абзацам.
  3. Установите новые значения для свойств IEffect.AnimateTextType и IEffect.DelayBetweenTextParts.
  4. Сохраните измененный файл PPTX.

Этот код на C# демонстрирует операцию:

// Создает экземпляр класса презентации, который представляет собой файл презентации.
using (Presentation pres = new Presentation("AnimTextBox_out.pptx"))
{
    ISlide firstSlide = pres.Slides[0];

    // Получает первый эффект главной последовательности
    IEffect firstEffect = firstSlide.Timeline.MainSequence[0];

    // Изменяет тип анимации текста эффекта на "Как один объект"
    firstEffect.TextAnimation.BuildType = BuildType.AsOneObject;

    // Изменяет тип анимации текста эффекта на "По словам"
    firstEffect.AnimateTextType = AnimateTextType.ByWord;

    // Устанавливает задержку между словами на 20% от длительности эффекта
    firstEffect.DelayBetweenTextParts = 20f;

    // Записывает файл PPTX на диск
    pres.Save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
}