Zastosuj animacje kształtów w prezentacjach przy użyciu Pythona

Wprowadzenie

Animacje to efekty wizualne, które można zastosować do tekstów, obrazów, kształtów lub wykresów. Dodają życia prezentacjom lub ich elementom.

Dlaczego używać animacji w prezentacjach?

  • kontrolować przepływ informacji
  • podkreślać ważne punkty
  • zwiększać zainteresowanie lub zaangażowanie publiczności
  • ułatwiać czytanie, przyswajanie lub przetwarzanie treści
  • przyciągać uwagę czytelników lub widzów do ważnych części w prezentacji

PowerPoint oferuje wiele opcji i narzędzi do animacji oraz efektów animacji w kategoriach wejścia, wyjścia, akcentu i ścieżek ruchu.

Animacje w Aspose.Slides

  • Aspose.Slides udostępnia klasy i typy potrzebne do pracy z animacjami w przestrzeni nazw Aspose.Slides.Animation.
  • Aspose.Slides udostępnia ponad 150 efektów animacji w wyliczeniu EffectType. Te efekty są zasadniczo takie same (lub równoważne) jak używane w PowerPoint.

Zastosuj animację do TextBox

Aspose.Slides for Python via .NET umożliwia zastosowanie animacji do tekstu w kształcie.

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj odniesienie do slajdu przez jego indeks.
  3. Dodaj rectangle IAutoShape.
  4. Dodaj tekst do IAutoShape.TextFrame.
  5. Pobierz główną sekwencję efektów.
  6. Dodaj efekt animacji do IAutoShape.
  7. Ustaw właściwość TextAnimation.BuildType na wartość z wyliczenia BuildType.
  8. Zapisz prezentację na dysku jako plik PPTX.

Ten kod w Pythonie pokazuje, jak zastosować efekt Fade do AutoShape i ustawić animację tekstu na wartość By 1st Level Paragraphs:

import aspose.slides as slides

# Tworzy instancję klasy prezentacji, która reprezentuje plik prezentacji.
with slides.Presentation() as pres:
    sld = pres.slides[0]
    
    # Dodaje nową AutoShape z tekstem
    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"

    # Pobiera główną sekwencję slajdu.
    sequence = sld.timeline.main_sequence

    # Dodaje efekt animacji Fade do kształtu
    effect = sequence.add_effect(autoShape, slides.animation.EffectType.FADE, slides.animation.EffectSubtype.NONE, slides.animation.EffectTriggerType.ON_CLICK)

    # Animuje tekst kształtu według akapitów pierwszego poziomu
    effect.text_animation.build_type = slides.animation.BuildType.BY_LEVEL_PARAGRAPHS1

    # Zapisuje plik PPTX na dysku
    pres.save("AnimText_out.pptx", slides.export.SaveFormat.PPTX)

Zastosuj animację do PictureFrame

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj odniesienie do slajdu przez jego indeks.
  3. Dodaj lub pobierz PictureFrame na slajdzie.
  4. Pobierz główną sekwencję efektów.
  5. Dodaj efekt animacji do PictureFrame.
  6. Zapisz prezentację na dysku jako plik PPTX.

Ten kod w Pythonie pokazuje, jak zastosować efekt Fly do ramki obrazu:

import aspose.slides as slides
import aspose.pydrawing as draw


# Tworzy instancję klasy prezentacji, która reprezentuje plik prezentacji.
with slides.Presentation() as pres:
    # Ładuje obraz, który ma zostać dodany do kolekcji obrazów w prezentacji
    img = draw.Bitmap("aspose-logo.jpg")
    image = pres.images.add_image(img)

    # Dodaje ramkę obrazu do slajdu
    picFrame = pres.slides[0].shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 50, 50, 100, 100, image)

    # Pobiera główną sekwencję slajdu.
    sequence = pres.slides[0].timeline.main_sequence

    # Dodaje efekt animacji Fly od lewej do ramki obrazu
    effect = sequence.add_effect(picFrame, slides.animation.EffectType.FLY,  
        slides.animation.EffectSubtype.LEFT, 
        slides.animation.EffectTriggerType.ON_CLICK)

    # Zapisuje plik PPTX na dysku
    pres.save("AnimImage_out.pptx", slides.export.SaveFormat.PPTX)

Zastosuj animację do Shape

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj odniesienie do slajdu przez jego indeks.
  3. Dodaj rectangle IAutoShape.
  4. Dodaj Bevel IAutoShape (gdy ten obiekt zostanie kliknięty, animacja zostanie odtworzona).
  5. Utwórz sekwencję efektów na kształcie bevel.
  6. Utwórz niestandardowy UserPath.
  7. Dodaj polecenia przemieszczania do UserPath.
  8. Zapisz prezentację na dysku jako plik PPTX.

Ten kod w Pythonie pokazuje, jak zastosować efekt PathFootball (ścieżka piłkowa) do kształtu:

import aspose.slides.animation as anim
import aspose.slides as slides
import aspose.pydrawing as draw

# Tworzy instancję klasy Presentation, która reprezentuje plik PPTX
with slides.Presentation() as pres:
    sld = pres.slides[0]

    # Tworzy efekt PathFootball dla istniejącego kształtu od podstaw.
    ashp = sld.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 250, 25)

    ashp.add_text_frame("Animated TextBox")

    # Dodaje efekt animacji PathFootBall.
    pres.slides[0].timeline.main_sequence.add_effect(ashp, 
        anim.EffectType.PATH_FOOTBALL,
        anim.EffectSubtype.NONE, 
        anim.EffectTriggerType.AFTER_PREVIOUS)

    # Tworzy pewnego rodzaju "przycisk".
    shapeTrigger = pres.slides[0].shapes.add_auto_shape(slides.ShapeType.BEVEL, 10, 10, 20, 20)

    # Tworzy sekwencję efektów dla przycisku.
    seqInter = pres.slides[0].timeline.interactive_sequences.add(shapeTrigger)

    # Tworzy niestandardową ścieżkę użytkownika. Nasz obiekt będzie przemieszczał się dopiero po kliknięciu przycisku.
    fxUserPath = seqInter.add_effect(ashp, 
        anim.EffectType.PATH_USER, 
        anim.EffectSubtype.NONE, 
        anim.EffectTriggerType.ON_CLICK)

    # Dodaje polecenia ruchu, ponieważ utworzona ścieżka jest pusta.
    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)

    # Zapisuje plik PPTX na dysku
    pres.save("AnimExample_out.pptx", slides.export.SaveFormat.PPTX)

Uzyskaj efekty animacji zastosowane do Shape

Poniższe przykłady pokazują, jak używać metody get_effects_by_shape z klasy Sequence aby uzyskać wszystkie efekty animacji zastosowane do kształtu.

Przykład 1: Pobierz efekty animacji zastosowane do kształtu na zwykłym slajdzie

Poprzednio nauczyłeś się, jak dodawać efekty animacji do kształtów w prezentacjach PowerPoint. Poniższy kod przykładowy pokazuje, jak pobrać efekty zastosowane do pierwszego kształtu na pierwszym zwykłym slajdzie w prezentacji AnimExample_out.pptx.

import aspose.slides as slides

with slides.Presentation("AnimExample_out.pptx") as presentation:
    first_slide = presentation.slides[0]

    # Pobiera główną sekwencję animacji slajdu.
    sequence = first_slide.timeline.main_sequence

    # Pobiera pierwszy kształt na pierwszym slajdzie.
    shape = first_slide.shapes[0]

    # Pobiera efekty animacji zastosowane do kształtu.
    shape_effects = sequence.get_effects_by_shape(shape)

    if len(shape_effects) > 0:
        print("The shape", shape.name, "has", len(shape_effects), "animation effects.")

Przykład 2: Pobierz wszystkie efekty animacji, w tym dziedziczone z placeholderów

Jeśli kształt na zwykłym slajdzie ma placeholdery znajdujące się na slajdzie układu i/lub slajdzie głównym, a efekty animacji zostały dodane do tych placeholderów, wszystkie efekty kształtu będą odtwarzane podczas pokazu slajdów, w tym te dziedziczone z placeholderów.

Załóżmy, że mamy plik prezentacji PowerPoint sample.pptx z jednym slajdem zawierającym jedynie kształt stopki z tekstem “Made with Aspose.Slides” oraz zastosowanym efektem Random Bars.

Efekt animacji kształtu slajdu

Załóżmy również, że efekt Split jest zastosowany do placeholdera stopki na slajdzie layout.

Efekt animacji kształtu układu

Na koniec, efekt Fly In jest zastosowany do placeholdera stopki na slajdzie master.

Efekt animacji kształtu master

Poniższy kod przykładowy pokazuje, jak używać metody get_base_placeholder z klasy Shape aby uzyskać dostęp do placeholderów kształtu i pobrać efekty animacji zastosowane do kształtu stopki, w tym dziedziczone z placeholderów znajdujących się na slajdach layout i master.

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]

    # Pobierz efekty animacji kształtu na zwykłym slajdzie.
    shape = slide.shapes[0]
    shape_effects = slide.timeline.main_sequence.get_effects_by_shape(shape)

    # Pobierz efekty animacji placeholdera na slajdzie układu.
    layout_shape = shape.get_base_placeholder()
    layout_shape_effects = slide.layout_slide.timeline.main_sequence.get_effects_by_shape(layout_shape)

    # Pobierz efekty animacji placeholdera na slajdzie master.
    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

Zmień właściwości czasowe efektu animacji

Aspose.Slides for Python via .NET umożliwia zmianę właściwości Timing efektu animacji.

To jest panel Timing animacji w Microsoft PowerPoint:

Panel Timing animacji

To są odpowiedniki pomiędzy Timingiem w PowerPoint a właściwościami Effect.Timing:

  • Lista rozwijana PowerPoint Timing Start odpowiada właściwości Effect.Timing.TriggerType.
  • PowerPoint Timing Duration odpowiada właściwości Effect.Timing.Duration. Czas trwania animacji (w sekundach) to całkowity czas potrzebny do zakończenia jednego cyklu.
  • PowerPoint Timing Delay odpowiada właściwości Effect.Timing.TriggerDelayTime.

Oto jak zmienić właściwości Timing efektu:

  1. Zastosuj lub pobierz efekt animacji.
  2. Ustaw nowe wartości właściwości Effect.Timing, które są potrzebne.
  3. Zapisz zmodyfikowany plik PPTX.
import aspose.slides as slides

# Tworzy instancję klasy prezentacji, która reprezentuje plik prezentacji.
with slides.Presentation("AnimExample_out.pptx") as pres:
    # Pobiera główną sekwencję slajdu.
    sequence = pres.slides[0].timeline.main_sequence

    # Pobiera pierwszy efekt głównej sekwencji.
    effect = sequence[0]

    # Zmienia TriggerType efektu, aby rozpoczął się po kliknięciu
    effect.timing.trigger_type = slides.animation.EffectTriggerType.ON_CLICK

    # Zmienia czas trwania efektu
    effect.timing.duration = 3

    # Zmienia TriggerDelayTime efektu
    effect.timing.trigger_delay_time = 0.5

    # Zapisuje plik PPTX na dysku
    pres.save("AnimExample_changed.pptx", slides.export.SaveFormat.PPTX)

Dźwięk efektu animacji

Aspose.Slides udostępnia następujące właściwości, które umożliwiają pracę z dźwiękami w efektach animacji:

  • sound
  • stop_previous_sound

Dodaj dźwięk efektu animacji

Ten kod w Pythonie pokazuje, jak dodać dźwięk do efektu animacji i zatrzymać go, gdy rozpocznie się kolejny efekt:

import aspose.slides as slides

with Presentation("AnimExample_out.pptx") as pres:
    # Dodaje dźwięk do kolekcji audio prezentacji
    effect_sound = pres.audios.add_audio(open("sampleaudio.wav", "rb").read())

    first_slide = pres.slides[0]

    # Pobiera główną sekwencję slajdu.
    sequence = first_slide.timeline.main_sequence

    # Pobiera pierwszy efekt głównej sekwencji
    first_effect = sequence[0]

    # Sprawdza, czy efekt nie ma dźwięku
    if not first_effect.stop_previous_sound and first_effect.sound is None:
        # Dodaje dźwięk do pierwszego efektu
        first_effect.sound = effect_sound

    # Pobiera pierwszą interaktywną sekwencję slajdu.
    interactive_sequence = first_slide.timeline.interactive_sequences[0]

    # Ustawia flagę „Stop previous sound” efektu
    interactive_sequence[0].stop_previous_sound = True

    # Zapisuje plik PPTX na dysku
    pres.save("AnimExample_Sound_out.pptx", slides.export.SaveFormat.PPTX)

Wyodrębnij dźwięk efektu animacji

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj odniesienie do slajdu przez jego indeks.
  3. Pobierz główną sekwencję efektów.
  4. Wyodrębnij osadzony sound z każdego efektu animacji.

Ten kod w Pythonie pokazuje, jak wyodrębnić dźwięk osadzony w efekcie animacji:

import aspose.slides as slides

# Tworzy instancję klasy prezentacji, która reprezentuje plik prezentacji.
with slides.Presentation("EffectSound.pptx") as presentation:
    slide = presentation.slides[0]

    # Pobiera główną sekwencję slajdu.
    sequence = slide.timeline.main_sequence

    for effect in sequence:
        if effect.sound is None:
            continue

        # Wyodrębnia dźwięk efektu jako tablicę bajtów
        audio = effect.sound.binary_data

Po animacji

Aspose.Slides for .NET umożliwia zmianę właściwości After animation efektu animacji.

To jest panel Efekt animacji i rozszerzone menu w Microsoft PowerPoint:

Panel Efekt animacji

Lista rozwijana PowerPoint Effect After animation odpowiada następującym właściwościom:

  • właściwość after_animation_type, która opisuje typ After animation:
  • właściwość after_animation_color, która definiuje format koloru after animation. Działa ona w połączeniu z typem COLOR. Jeśli zmienisz typ na inny, kolor after animation zostanie wyczyszczony.

Ten kod w Pythonie pokazuje, jak zmienić efekt after animation:

import aspose.slides as slides

# Tworzy instancję klasy prezentacji, która reprezentuje plik prezentacji
with slides.Presentation("AnimImage_out.pptx") as pres:
    first_slide = pres.slides[0]

    # Pobiera pierwszy efekt głównej sekwencji
    first_effect = first_slide.timeline.main_sequence[0]

    # Zmienia typ after animation na Color
    first_effect.after_animation_type = AfterAnimationType.COLOR

    # Ustawia kolor przyciemnienia after animation
    first_effect.after_animation_color.color = Color.alice_blue

    # Zapisuje plik PPTX na dysku
    pres.save("AnimImage_AfterAnimation.pptx", slides.export.SaveFormat.PPTX)

Animuj tekst

Aspose.Slides udostępnia następujące właściwości, które pozwalają na pracę z blokiem Animate text efektu animacji:

  • animate_text_type, która opisuje typ animacji tekstu w efekcie. Tekst kształtu może być animowany:
  • delay_between_text_parts ustawia opóźnienie pomiędzy animowanymi częściami tekstu (słowami lub literami). Dodatnia wartość określa procent czasu trwania efektu. Ujemna wartość określa opóźnienie w sekundach.

Oto jak można zmienić właściwości Effect Animate text:

  1. Zastosuj lub pobierz efekt animacji.
  2. Ustaw właściwość build_type na wartość AS_ONE_OBJECT, aby wyłączyć tryb animacji By Paragraphs.
  3. Ustaw nowe wartości właściwości animate_text_type i delay_between_text_parts.
  4. Zapisz zmodyfikowany plik PPTX.
import aspose.slides as slides

with slides.Presentation("AnimTextBox_out.pptx") as pres:
    first_slide = pres.slides[0]

    # Pobiera pierwszy efekt głównej sekwencji
    first_effect = first_slide.timeline.main_sequence[0]

    # Zmienia typ animacji tekstu efektu na "As One Object"
    first_effect.text_animation.build_type = slides.animation.BuildType.AS_ONE_OBJECT

    # Zmienia typ animacji tekstu na "By word"
    first_effect.animate_text_type = slides.animation.AnimateTextType.BY_WORD

    # Ustawia opóźnienie między słowami na 20% czasu trwania efektu
    first_effect.delay_between_text_parts = 20

    # Zapisuje plik PPTX na dysku
    pres.save("AnimTextBox_AnimateText.pptx", slides.export.SaveFormat.PPTX)

FAQ

Jak mogę zapewnić, że animacje zostaną zachowane przy publikowaniu prezentacji w sieci?

Eksportuj do HTML5 i włącz opcje odpowiedzialne za animacje kształtów i przejść. Zwykły HTML nie odtwarza animacji slajdów, natomiast HTML5 tak.

Jak zmiana kolejności z-order (kolejności warstw) kształtów wpływa na animację?

Animacja i kolejność rysowania są niezależne: efekt kontroluje timing i rodzaj pojawiania/zanikania, natomiast z-order określa, co co zasłania. Widoczny rezultat jest określany przez ich kombinację. (Takie jest ogólne zachowanie PowerPoint; model efektów i kształtów Aspose.Slides podąża za tą samą logiką.)

Czy istnieją ograniczenia przy konwertowaniu animacji na wideo dla niektórych efektów?

Ogólnie animacje są wspierane, ale rzadkie przypadki lub specyficzne efekty mogą być renderowane inaczej. Zaleca się przetestowanie używanych efektów oraz wersji biblioteki.