Применение анимаций фигур в презентациях с Python
Анимации — это визуальные эффекты, которые можно применять к тексту, изображениям, фигурам или диаграммам. Они придают жизнь презентациям или их компонентам.
Зачем использовать анимацию в презентациях?
Используя анимацию, вы можете
- контролировать поток информации
- подчёркивать важные моменты
- повышать интерес или вовлечённость аудитории
- делать контент более лёгким для чтения, усвоения или обработки
- привлекать внимание читателей или зрителей к важным частям презентации
PowerPoint предоставляет множество вариантов и инструментов для анимаций и анимационных эффектов в категориях вход, выход, акцент и траектории движения.
Анимации в Aspose.Slides
- Aspose.Slides предоставляет классы и типы, необходимые для работы с анимациями в пространстве имён Aspose.Slides.Animation.
- Aspose.Slides предоставляет более 150 анимационных эффектов в перечислении EffectType. Эти эффекты по существу такие же (или эквивалентные) эффекты, используемые в PowerPoint.
Применение анимации к TextBox
Aspose.Slides для Python через .NET позволяет применять анимацию к тексту в фигуре.
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте
rectangleIAutoShape. - Добавьте текст в
IAutoShape.TextFrame. - Получите основную последовательность эффектов.
- Добавьте анимационный эффект к IAutoShape.
- Установите свойство
TextAnimation.BuildTypeв значение из перечисленияBuildType. - Запишите презентацию на диск в виде файла PPTX.
Этот код на Python показывает, как применить эффект Fade к AutoShape и установить анимацию текста со значением By 1st Level Paragraphs:
import aspose.slides as slides
# Создает экземпляр класса презентации, представляющего файл презентации.
with slides.Presentation() as pres:
sld = pres.slides[0]
# Добавляет новую AutoShape с текстом
autoShape = sld.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 20, 20, 150, 100)
textFrame = autoShape.text_frame
textFrame.text = "First paragraph \nSecond paragraph \n Third paragraph"
# Получает основную последовательность слайда.
sequence = sld.timeline.main_sequence
# Добавляет эффект анимации Fade к фигуре
effect = sequence.add_effect(autoShape, slides.animation.EffectType.FADE, slides.animation.EffectSubtype.NONE, slides.animation.EffectTriggerType.ON_CLICK)
# Анимирует текст фигуры по абзацам первого уровня
effect.text_animation.build_type = slides.animation.BuildType.BY_LEVEL_PARAGRAPHS1
# Сохраняет файл PPTX на диск
pres.save("AnimText_out.pptx", slides.export.SaveFormat.PPTX)
Применение анимации к PictureFrame
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте или получите PictureFrame на слайде.
- Получите основную последовательность эффектов.
- Добавьте анимационный эффект к PictureFrame.
- Запишите презентацию на диск в виде файла PPTX.
Этот код на Python показывает, как применить эффект Fly к кадру изображения:
import aspose.slides as slides
import aspose.pydrawing as draw
# Создает экземпляр класса презентации, представляющего файл презентации.
with slides.Presentation() as pres:
# Загружает изображение, которое будет добавлено в коллекцию изображений презентации
img = draw.Bitmap("aspose-logo.jpg")
image = pres.images.add_image(img)
# Добавляет рамку изображения на слайд
picFrame = pres.slides[0].shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 50, 50, 100, 100, image)
# Получает основную последовательность слайда.
sequence = pres.slides[0].timeline.main_sequence
# Добавляет эффект анимации Fly слева к рамке изображения
effect = sequence.add_effect(picFrame, slides.animation.EffectType.FLY,
slides.animation.EffectSubtype.LEFT,
slides.animation.EffectTriggerType.ON_CLICK)
# Сохраняет файл PPTX на диск
pres.save("AnimImage_out.pptx", slides.export.SaveFormat.PPTX)
Применение анимации к Shape
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте
rectangleIAutoShape. - Добавьте
BevelIAutoShape (при щелчке по этому объекту анимация воспроизводится). - Создайте последовательность эффектов для фигуры с фаской.
- Создайте пользовательский
UserPath. - Добавьте команды перемещения к
UserPath. - Запишите презентацию на диск в виде файла PPTX.
Этот код на Python показывает, как применить эффект PathFootball (путь «футбол») к фигуре:
import aspose.slides.animation as anim
import aspose.slides as slides
import aspose.pydrawing as draw
# Создает экземпляр класса Presentation, представляющего файл PPTX
with slides.Presentation() as pres:
sld = pres.slides[0]
# Создает эффект PathFootball для существующей фигуры с нуля.
ashp = sld.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 250, 25)
ashp.add_text_frame("Animated TextBox")
# Добавляет анимационный эффект PathFootBall.
pres.slides[0].timeline.main_sequence.add_effect(ashp,
anim.EffectType.PATH_FOOTBALL,
anim.EffectSubtype.NONE,
anim.EffectTriggerType.AFTER_PREVIOUS)
# Создает некую "кнопку".
shapeTrigger = pres.slides[0].shapes.add_auto_shape(slides.ShapeType.BEVEL, 10, 10, 20, 20)
# Создает последовательность эффектов для кнопки.
seqInter = pres.slides[0].timeline.interactive_sequences.add(shapeTrigger)
# Создает пользовательский путь. Наш объект будет перемещён только после нажатия кнопки.
fxUserPath = seqInter.add_effect(ashp,
anim.EffectType.PATH_USER,
anim.EffectSubtype.NONE,
anim.EffectTriggerType.ON_CLICK)
# Добавляет команды перемещения, так как созданный путь пуст.
motionBhv = fxUserPath.behaviors[0]
pts = [draw.PointF(0.076, 0.59)]
motionBhv.path.add(anim.MotionCommandPathType.LINE_TO, pts, anim.MotionPathPointsType.AUTO, True)
pts = [draw.PointF(-0.076, -0.59)]
motionBhv.path.add(anim.MotionCommandPathType.LINE_TO, pts, anim.MotionPathPointsType.AUTO, False)
motionBhv.path.add(anim.MotionCommandPathType.END, None, anim.MotionPathPointsType.AUTO, False)
# Записывает файл PPTX на диск
pres.save("AnimExample_out.pptx", slides.export.SaveFormat.PPTX)
Получение анимационных эффектов, применённых к Shape
Ниже приведены примеры, показывающие, как использовать метод get_effects_by_shape из класса Sequence для получения всех анимационных эффектов, применённых к фигуре.
Пример 1: Получить анимационные эффекты, применённые к фигуре на обычном слайде
Ранее вы узнали, как добавлять анимационные эффекты к фигурам в презентациях PowerPoint. Следующий пример кода демонстрирует, как получить эффекты, применённые к первой фигуре на первом обычном слайде в презентации AnimExample_out.pptx.
import aspose.slides as slides
with slides.Presentation("AnimExample_out.pptx") as presentation:
first_slide = presentation.slides[0]
# Получает основную последовательность анимации слайда.
sequence = first_slide.timeline.main_sequence
# Получает первую фигуру на первом слайде.
shape = first_slide.shapes[0]
# Получает анимационные эффекты, применённые к фигуре.
shape_effects = sequence.get_effects_by_shape(shape)
if len(shape_effects) > 0:
print("The shape", shape.name, "has", len(shape_effects), "animation effects.")
Пример 2: Получить все анимационные эффекты, включая наследованные из заполнителей
Если фигура на обычном слайде имеет заполнители, расположенные на слайде‑макете и/или мастере, и к этим заполнителям добавлены анимационные эффекты, то все эффекты фигуры будут воспроизводиться во время показа, включая унаследованные из заполнителей.
Предположим, у нас есть файл презентации PowerPoint sample.pptx с одним слайдом, содержащим только фигуру нижнего колонтитула с текстом «Made with Aspose.Slides», к которой применён эффект Random Bars.

Предположим также, что к заполнителю нижнего колонтитула на макете применён эффект Split.

И, наконец, к заполнителю нижнего колонтитула на мастере применён эффект Fly In.

Следующий пример кода показывает, как использовать метод get_base_placeholder из класса Shape для доступа к заполнителям фигуры и получения анимационных эффектов, применённых к фигуре нижнего колонтитула, включая унаследованные из заполнителей, расположенных на макете и мастере.
import aspose.slides as slides
def print_effects(effects):
for effect in effects:
print(effect.type.name, effect.subtype.name)
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
# Получить анимационные эффекты фигуры на обычном слайде.
shape = slide.shapes[0]
shape_effects = slide.timeline.main_sequence.get_effects_by_shape(shape)
# Получить анимационные эффекты заполнителя на слайде макета.
layout_shape = shape.get_base_placeholder()
layout_shape_effects = slide.layout_slide.timeline.main_sequence.get_effects_by_shape(layout_shape)
# Получить анимационные эффекты заполнителя на слайде мастера.
master_shape = layout_shape.get_base_placeholder()
master_shape_effects = slide.layout_slide.master_slide.timeline.main_sequence.get_effects_by_shape(master_shape)
print("Main sequence of shape effects:")
print_effects(master_shape_effects)
print_effects(layout_shape_effects)
print_effects(shape_effects)
Output:
Main sequence of shape effects:
FLY BOTTOM
SPLIT VERTICAL_IN
RANDOM_BARS HORIZONTAL
Изменение свойств тайминга анимационных эффектов
Aspose.Slides для Python через .NET позволяет изменять свойства тайминга анимационного эффекта.
Это панель тайминга анимации в Microsoft PowerPoint:

Соответствия между таймингом PowerPoint и свойствами Effect.Timing:
- Выпадающий список Start в PowerPoint соответствует свойству Effect.Timing.TriggerType.
- Параметр Duration соответствует свойству
Effect.Timing.Duration. Длительность анимации (в секундах) — это общее время, за которое анимация завершает один цикл. - Параметр Delay соответствует свойству
Effect.Timing.TriggerDelayTime.
Как изменить свойства тайминга эффекта:
- Примените или получите анимационный эффект.
- Установите новые значения нужных вам свойств
Effect.Timing. - Сохраните изменённый файл PPTX.
Этот код на Python демонстрирует операцию:
import aspose.slides as slides
# Создает экземпляр класса презентации, представляющего файл презентации.
with slides.Presentation("AnimExample_out.pptx") as pres:
# Получает основную последовательность слайда.
sequence = pres.slides[0].timeline.main_sequence
# Получает первый эффект основной последовательности.
effect = sequence[0]
# Изменяет TriggerType эффекта, чтобы запускать по щелчку
effect.timing.trigger_type = slides.animation.EffectTriggerType.ON_CLICK
# Изменяет длительность эффекта
effect.timing.duration = 3
# Изменяет время задержки запуска эффекта
effect.timing.trigger_delay_time = 0.5
# Сохраняет файл PPTX на диск
pres.save("AnimExample_changed.pptx", slides.export.SaveFormat.PPTX)
Звук анимационного эффекта
Aspose.Slides предоставляет следующие свойства для работы со звуками в анимационных эффектах:
soundstop_previous_sound
Добавить звук анимационного эффекта
Этот код на Python показывает, как добавить звук к анимационному эффекту и остановить его, когда начинается следующий эффект:
import aspose.slides as slides
with Presentation("AnimExample_out.pptx") as pres:
# Добавляет аудио в коллекцию аудио презентации
effect_sound = pres.audios.add_audio(open("sampleaudio.wav", "rb").read())
first_slide = pres.slides[0]
# Получает основную последовательность слайда.
sequence = first_slide.timeline.main_sequence
# Получает первый эффект основной последовательности
first_effect = sequence[0]
# Проверяет эффект на отсутствие звука
if not first_effect.stop_previous_sound and first_effect.sound is None:
# Добавляет звук к первому эффекту
first_effect.sound = effect_sound
# Получает первую интерактивную последовательность слайда.
interactive_sequence = first_slide.timeline.interactive_sequences[0]
# Устанавливает флаг эффекта "Stop previous sound"
interactive_sequence[0].stop_previous_sound = True
# Записывает файл PPTX на диск
pres.save("AnimExample_Sound_out.pptx", slides.export.SaveFormat.PPTX)
Извлечь звук анимационного эффекта
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Получите основную последовательность эффектов.
- Извлеките встроенный в каждый анимационный эффект
sound.
Этот код на Python показывает, как извлечь звук, встроенный в анимационный эффект:
import aspose.slides as slides
# Создает экземпляр класса презентации, представляющего файл презентации.
with slides.Presentation("EffectSound.pptx") as presentation:
slide = presentation.slides[0]
# Получает основную последовательность слайда.
sequence = slide.timeline.main_sequence
for effect in sequence:
if effect.sound is None:
continue
# Извлекает звук эффекта в виде массива байтов
audio = effect.sound.binary_data
После анимации
Aspose.Slides для .NET позволяет изменять свойство After animation анимационного эффекта.
Это панель анимационного эффекта и расширенное меню в Microsoft PowerPoint:

Выпадающий список After animation в PowerPoint соответствует следующим свойствам:
- свойство
after_animation_type, которое описывает тип After animation:- Пункт More Colors соответствует типу COLOR;
- Пункт Don’t Dim соответствует типу DO_NOT_DIM (тип по умолчанию);
- Пункт Hide After Animation соответствует типу HIDE_AFTER_ANIMATION;
- Пункт Hide on Next Mouse Click соответствует типу HIDE_ON_NEXT_MOUSE_CLICK;
- свойство
after_animation_color, которое задаёт цвет после анимации. Это свойство работает совместно с типом COLOR. При изменении типа на другой цвет после анимации будет очищен.
Этот код на Python показывает, как изменить эффект After animation:
import aspose.slides as slides
# Создает экземпляр класса презентации, представляющего файл презентации
with slides.Presentation("AnimImage_out.pptx") as pres:
first_slide = pres.slides[0]
# Получает первый эффект основной последовательности
first_effect = first_slide.timeline.main_sequence[0]
# Изменяет тип after animation на Color
first_effect.after_animation_type = AfterAnimationType.COLOR
# Устанавливает цвет затемнения after animation
first_effect.after_animation_color.color = Color.alice_blue
# Сохраняет файл PPTX на диск
pres.save("AnimImage_AfterAnimation.pptx", slides.export.SaveFormat.PPTX)
Анимировать текст
Aspose.Slides предоставляет следующие свойства для работы с блоком Animate text анимационного эффекта:
animate_text_type, который описывает тип анимации текста. Текст фигуры может быть анимирован:- Всё одновременно (ALL_AT_ONCE тип)
- По словам (BY_WORD тип)
- По буквам (BY_LETTER тип)
delay_between_text_partsзадаёт задержку между частями анимированного текста (словами или буквами). Положительное значение указывает процент от длительности эффекта, отрицательное — задержку в секундах.
Как изменить свойства Animate text эффекта:
- Примените или получите анимационный эффект.
- Установите свойство
build_typeв значение AS_ONE_OBJECT, чтобы отключить режим By Paragraphs. - Установите новые значения для свойств
animate_text_typeиdelay_between_text_parts. - Сохраните изменённый файл PPTX.
Этот код на Python демонстрирует операцию:
import aspose.slides as slides
with slides.Presentation("AnimTextBox_out.pptx") as pres:
first_slide = pres.slides[0]
# Получает первый эффект основной последовательности
first_effect = first_slide.timeline.main_sequence[0]
# Изменяет тип текстовой анимации эффекта на "As One Object"
first_effect.text_animation.build_type = slides.animation.BuildType.AS_ONE_OBJECT
# Изменяет тип анимации текста эффекта на "By word"
first_effect.animate_text_type = slides.animation.AnimateTextType.BY_WORD
# Устанавливает задержку между словами на 20% от длительности эффекта
first_effect.delay_between_text_parts = 20
# Сохраняет файл PPTX на диск
pres.save("AnimTextBox_AnimateText.pptx", slides.export.SaveFormat.PPTX)
FAQ
Как обеспечить сохранение анимаций при публикации презентации в веб?
Export to HTML5 и включить соответствующие options для анимаций shape и transition. Обычный HTML не воспроизводит анимацию слайдов, тогда как HTML5 — воспроизводит.
Как изменение порядка слоёв (z‑order) фигур влияет на анимацию?
Порядок анимации и порядок отрисовки независимы: эффект управляет временем и типом появления/исчезновения, а z-order определяет, что покрывает что. Видимый результат формируется их комбинацией. (Это общее поведение PowerPoint; модель Aspose.Slides следует той же логике.)
Есть ли ограничения при конвертации анимаций в видео для некоторых эффектов?
В целом анимации поддерживаются, однако в редких случаях или для специфических эффектов результат может отличаться. Рекомендуется протестировать используемые эффекты и текущую версию библиотеки.