Анимация форм
Анимации — этоVisual эффекты, которые можно применять к текстам, изображениям, фигурам или диаграммам. Они придают жизнь презентациям или их компонентам.
Почему стоит использовать анимацию в презентациях?
Используя анимации, вы можете
- контролировать поток информации
- подчеркивать важные моменты
- увеличивать интерес или вовлеченность вашей аудитории
- облегчать чтение, усвоение или обработку контента
- привлекать внимание ваших читателей или зрителей к важным частям презентации
PowerPoint предлагает множество опций и инструментов для анимации и эффектов анимации в категориях вход, выход, акцент и движение.
Анимации в Aspose.Slides
- Aspose.Slides предоставляет классы и типы, необходимые для работы с анимациями в пространстве имен Aspose.Slides.Animation,
- Aspose.Slides предоставляет более 150 эффекта анимации в перечислении EffectType. Эти эффекты по существу такие же (или эквивалентные) эффекты, используемые в PowerPoint.
Применить анимацию к текстовому полю
Aspose.Slides для C++ позволяет применять анимацию к тексту в фигуре.
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте
прямоугольник
IAutoShape. - Добавьте текст в IAutoShape.TextFrame.
- Получите основную последовательность эффектов.
- Добавьте эффект анимации к IAutoShape.
- Установите свойство TextAnimation.BuildType в значение из перечисления BuildType.
- Запишите презентацию на диск в формате PPTX.
Этот код C++ показывает, как применить эффект Fade
к AutoShape и установить анимацию текста на значение По 1-му уровню абзацев:
// Создает экземпляр класса презентации, представляющей файл презентации.
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();
System::SharedPtr<ISlide> sld = pres->get_Slides()->idx_get(0);
// Добавляет новую AutoShape с текстом
System::SharedPtr<IAutoShape> autoShape =
sld->get_Shapes()->AddAutoShape(Aspose::Slides::ShapeType::Rectangle, 20.0f, 20.0f, 150.0f, 100.0f);
System::SharedPtr<ITextFrame> textFrame = autoShape->get_TextFrame();
textFrame->set_Text(u"Первый абзац \nВторой абзац \nТретий абзац");
// Получает основную последовательность слайда.
System::SharedPtr<ISequence> sequence = sld->get_Timeline()->get_MainSequence();
// Добавляет эффект анимации Fade к фигуре
System::SharedPtr<IEffect> effect = sequence->AddEffect(autoShape, Aspose::Slides::Animation::EffectType::Fade,
Aspose::Slides::Animation::EffectSubtype::None, Aspose::Slides::Animation::EffectTriggerType::OnClick);
// Анимирует текст фигуры по 1-му уровню абзацев
effect->get_TextAnimation()->set_BuildType(Aspose::Slides::Animation::BuildType::ByLevelParagraphs1);
// Сохраняет файл PPTX на диск
pres->Save(path + u"AnimText_out.pptx", Aspose::Slides::Export::SaveFormat::Pptx);
Применить анимацию к PictureFrame
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте или получите PictureFrame на слайде.
- Получите основную последовательность эффектов.
- Добавьте эффект анимации к PictureFrame.
- Запишите презентацию на диск в формате PPTX.
Этот код C++ показывает, как применить эффект Fly
к рамке изображения:
// Создает экземпляр класса презентации, представляющей файл презентации.
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();
// Загружает изображение, которое будет добавлено в коллекцию изображений презентации
System::SharedPtr<IImage> img = Images::FromFile(u"aspose-logo.jpg");
System::SharedPtr<IPPImage> image = pres->get_Images()->AddImage(img);
// Добавляет рамку изображения на слайд
System::SharedPtr<IPictureFrame> picFrame =
pres->get_Slides()->idx_get(0)->get_Shapes()->AddPictureFrame(Aspose::Slides::ShapeType::Rectangle, 50.0f, 50.0f, 100.0f, 100.0f, image);
// Получает основную последовательность слайда.
System::SharedPtr<ISequence> sequence = pres->get_Slides()->idx_get(0)->get_Timeline()->get_MainSequence();
// Добавляет эффект анимации Fly from Left к рамке изображения
System::SharedPtr<IEffect> effect = sequence->AddEffect(picFrame, Aspose::Slides::Animation::EffectType::Fly,
Aspose::Slides::Animation::EffectSubtype::Left, Aspose::Slides::Animation::EffectTriggerType::OnClick);
// Сохраняет файл PPTX на диск
pres->Save(path + u"AnimImage_out.pptx", Aspose::Slides::Export::SaveFormat::Pptx);
Применить анимацию к фигуре
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте
прямоугольник
IAutoShape. - Добавьте
Bevel
IAutoShape (при нажатии на этот объект анимация проигрывается). - Создайте последовательность эффектов на фигуре Bevel.
- Создайте пользовательский
UserPath
. - Добавьте команды для перемещения к
UserPath
. - Запишите презентацию на диск в формате PPTX.
Этот код C++ показывает, как применить эффект PathFootball
к фигуре:
// Путь к директории документа.
const String outPath = u"../out/AnimationsOnShapes_out.pptx";
const String templatePath = u"../templates/ConnectorLineAngle.pptx";
// Загружает презентацию
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// Получает первый слайд
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Получает коллекцию фигур для выбранного слайда
SharedPtr<IShapeCollection> shapes = slide->get_Shapes();
// Создает эффект PathFootball для существующей фигуры с нуля.
SharedPtr<IAutoShape> ashp = slide->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 150, 150, 250, 25);
ashp->AddTextFrame(u"Анимированное текстовое поле");
// Добавляет эффект анимации PathFootball
slide->get_Timeline()->get_MainSequence()->AddEffect(ashp, EffectType::PathFootball,
EffectSubtype::None, EffectTriggerType::AfterPrevious);
// Создает нечто вроде "кнопки".
SharedPtr<IAutoShape> shapeTrigger = slide->get_Shapes()->AddAutoShape(ShapeType::Bevel, 10, 10, 20, 20);
// Создает последовательность эффектов для этой кнопки.
SharedPtr<ISequence> seqInter = slide->get_Timeline()->get_InteractiveSequences()->Add(shapeTrigger);
// Создает пользовательский путь. Наш объект будет перемещен только после нажатия на кнопку.
SharedPtr<IEffect> fxUserPath = seqInter->AddEffect(ashp, EffectType::PathUser, EffectSubtype::None, EffectTriggerType::OnClick);
// Добавляет команды для перемещения, так как созданный путь пуст.
SharedPtr<MotionEffect> motionBhv = ExplicitCast<MotionEffect>(fxUserPath->get_Behaviors()->idx_get(0));
// SharedPtr<PointF> point = MakeObject<PointF >(0.076, 0.59);
const PointF point = PointF (0.076, 0.59);
System::ArrayPtr<PointF> pts = System::MakeObject<System::Array<PointF>>(1, point);
motionBhv->get_Path()->Add(MotionCommandPathType::LineTo, pts, MotionPathPointsType::Auto, true);
//PointF point2[1] = { -0.076, -0.59 };
const PointF point2 = PointF(-0.076, -0.59 );
System::ArrayPtr<PointF> pts2 = System::MakeObject<System::Array<PointF>>(1, point2);
motionBhv->get_Path()->Add(MotionCommandPathType::LineTo, pts2, MotionPathPointsType::Auto, false);
motionBhv->get_Path()->Add(MotionCommandPathType::End, nullptr, MotionPathPointsType::Auto, false);
//Записывает файл PPTX на диск
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
Получить эффекты анимации, примененные к фигуре
Вы можете решить, хотите ли вы узнать о всех эффектах анимации, примененных к одной фигуре.
Этот код C++ показывает, как получить все эффекты, примененные к конкретной фигуре:
// Создает экземпляр класса презентации, представляющей файл презентации.
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"AnimExample_out.pptx");
System::SharedPtr<ISlide> firstSlide = pres->get_Slides()->idx_get(0);
// Получает основную последовательность слайда.
System::SharedPtr<ISequence> sequence = firstSlide->get_Timeline()->get_MainSequence();
// Получает первую фигуру на слайде.
System::SharedPtr<IShape> shape = firstSlide->get_Shapes()->idx_get(0);
// Получает все эффекты анимации, примененные к фигуре.
System::ArrayPtr<System::SharedPtr<IEffect>> shapeEffects = sequence->GetEffectsByShape(shape);
if (shapeEffects->get_Length() > 0)
{
System::Console::WriteLine(System::String(u"Фигура ") + shape->get_Name() + u" имеет " + shapeEffects->get_Length() + u" эффекта анимации.");
}
Изменить свойства времени эффекта анимации
Aspose.Slides для C++ позволяет изменять свойства времени эффекта анимации.
Это панель времени анимации в Microsoft PowerPoint:
Вот соответствия между временем PowerPoint и свойствами Effect.Timing:
- Выпадающий список времени PowerPoint Начало соответствует свойству Effect.Timing.TriggerType.
- Время PowerPoint Длительность соответствует свойству Effect.Timing.Duration. Длительность анимации (в секундах) — это общее время, необходимое анимации для завершения одного цикла.
- Время PowerPoint Задержка соответствует свойству Effect.Timing.TriggerDelayTime.
Вот как изменить свойства времени эффекта:
- Примените или получите эффект анимации.
- Установите новые значения свойств Effect.Timing, которые вам нужны.
- Сохраните измененный файл PPTX.
Этот код C++ демонстрирует операцию:
// Создает экземпляр класса презентации, представляющей файл презентации.
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"AnimExample_out.pptx");
// Получает основную последовательность слайда.
System::SharedPtr<ISequence> sequence = pres->get_Slides()->idx_get(0)->get_Timeline()->get_MainSequence();
// Получает первый эффект основной последовательности.
System::SharedPtr<IEffect> effect = sequence->idx_get(0);
// Изменяет тип триггера эффекта на "начать по щелчку"
effect->get_Timing()->set_TriggerType(Aspose::Slides::Animation::EffectTriggerType::OnClick);
// Изменяет длительность эффекта
effect->get_Timing()->set_Duration(3.f);
// Изменяет время задержки триггера эффекта
effect->get_Timing()->set_TriggerDelayTime(0.5f);
// Сохраняет файл PPTX на диск
pres->Save(u"AnimExample_changed.pptx", Aspose::Slides::Export::SaveFormat::Pptx);
Звук эффекта анимации
Aspose.Slides предоставляет эти свойства, чтобы вы могли работать со звуками в эффектах анимации:
Добавить звук эффекта анимации
Этот код C++ показывает, как добавить звук эффекта анимации и остановить его, когда начинается следующий эффект:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"AnimExample_out.pptx");
// Добавляет аудио в коллекцию аудио презентации
System::SharedPtr<IAudio> effectSound = pres->get_Audios()->AddAudio(System::IO::File::ReadAllBytes(u"sampleaudio.wav"));
System::SharedPtr<ISlide> firstSlide = pres->get_Slide(0);
// Получает основную последовательность слайда.
System::SharedPtr<ISequence> sequence = firstSlide->get_Timeline()->get_MainSequence();
// Получает первый эффект основной последовательности
System::SharedPtr<IEffect> firstEffect = sequence->idx_get(0);
// Проверяет эффект на "Нет звука"
if (!firstEffect->get_StopPreviousSound() && firstEffect->get_Sound() == nullptr)
{
// Добавляет звук для первого эффекта
firstEffect->set_Sound(effectSound);
}
// Получает первую интерактивную последовательность слайда.
System::SharedPtr<ISequence> interactiveSequence = firstSlide->get_Timeline()->get_InteractiveSequence(0);
// Устанавливает флаг эффекта "Остановить предыдущий звук"
interactiveSequence->idx_get(0)->set_StopPreviousSound(true);
// Записывает файл PPTX на диск
pres->Save(u"AnimExample_Sound_out.pptx", SaveFormat::Pptx);
Извлечь звук эффекта анимации
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по индексу.
- Получите основную последовательность эффектов.
- Извлеките set_Sound() встроенный в каждый эффект анимации.
Этот код C++ показывает, как извлечь звук, встроенный в эффект анимации:
// Создает экземпляр класса презентации, представляющей файл презентации.
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"EffectSound.pptx");
System::SharedPtr<ISlide> slide = pres->get_Slide(0);
// Получает основную последовательность слайда.
System::SharedPtr<ISequence> sequence = slide->get_Timeline()->get_MainSequence();
for (auto&& effect : sequence)
{
System::SharedPtr<IAudio> sound = effect->get_Sound();
if (sound == nullptr)
continue;
auto audio = sound->get_BinaryData();
}
После анимации
Aspose.Slides для C++ позволяет изменять свойство “После анимации” эффекта анимации.
Это панель эффекта анимации и расширенное меню в Microsoft PowerPoint:
Выпадающий список PowerPoint После анимации соответствует следующим свойствам:
- set_AfterAnimationType() свойству, которое описывает тип после анимации :
- PowerPoint Больше цветов соответствует типу AfterAnimationType.Color;
- Элемент списка PowerPoint Не затенять соответствует типу AfterAnimationType.DoNotDim (тип по умолчанию после анимации);
- Элемент PowerPoint Скрыть после анимации соответствует типу AfterAnimationType.HideAfterAnimation ;
- Элемент PowerPoint Скрыть при следующем щелчке мыши соответствует типу AfterAnimationType.HideOnNextMouseClick ;
- set_AfterAnimationColor() свойству, которое определяет формат цвета после анимации. Это свойство работает совместно с типом AfterAnimationType.Color . Если вы измените тип на другой, цвет после анимации будет очищен.
Этот код C++ показывает, как изменить эффект после анимации:
// Создает экземпляр класса презентации, представляющей файл презентации
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"AnimImage_out.pptx");
System::SharedPtr<ISlide> firstSlide = pres->get_Slide(0);
// Получает первый эффект основной последовательности
System::SharedPtr<IEffect> firstEffect = firstSlide->get_Timeline()->get_MainSequence()->idx_get(0);
// Изменяет тип после анимации на цвет
firstEffect->set_AfterAnimationType(AfterAnimationType::Color);
// Устанавливает цвет затенения после анимации
firstEffect->get_AfterAnimationColor()->set_Color(System::Drawing::Color::get_AliceBlue());
// Записывает файл PPTX на диск
pres->Save(u"AnimImage_AfterAnimation.pptx", SaveFormat::Pptx);
Анимировать текст
Aspose.Slides предоставляет эти свойства, которые позволяют вам работать с блоком Анимировать текст эффекта анимации:
- set_AnimateTextType() который описывает тип анимации текста эффекта. Текст фигуры может быть анимирован:
- Все сразу (AnimateTextType.AllAtOnce тип)
- По словам (AnimateTextType.ByWord тип)
- По буквам (AnimateTextType.ByLetter тип)
- set_DelayBetweenTextParts() устанавливает задержку между анимированными частями текста (словами или буквами). Положительное значение указывает процент от длительности эффекта. Отрицательное значение указывает задержку в секундах.
Вот как изменить свойства Effect Animate text:
- Примените или получите эффект анимации.
- Установите свойство set_BuildType() в значение BuildType.AsOneObject , чтобы отключить режим анимации По абзацам.
- Установите новые значения для свойств set_AnimateTextType() и set_DelayBetweenTextParts().
- Сохраните измененный файл PPTX.
Этот код C++ демонстрирует операцию:
// Создает экземпляр класса презентации, представляющей файл презентации.
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"AnimTextBox_out.pptx");
System::SharedPtr<ISlide> firstSlide = pres->get_Slide(0);
// Получает первый эффект основной последовательности
System::SharedPtr<IEffect> firstEffect = firstSlide->get_Timeline()->get_MainSequence()->idx_get(0);
// Изменяет тип анимации текста эффекта на "Как один объект"
firstEffect->get_TextAnimation()->set_BuildType(BuildType::AsOneObject);
// Изменяет тип анимации текста эффекта на "По словам"
firstEffect->set_AnimateTextType(AnimateTextType::ByWord);
// Устанавливает задержку между словами на 20% от длительности эффекта
firstEffect->set_DelayBetweenTextParts(20.0f);
// Записывает файл PPTX на диск
pres->Save(u"AnimTextBox_AnimateText.pptx", SaveFormat::Pptx);