none
Wipe Effect - Beispiel mehrfach verwenden RRS feed

  • Frage

  • Hallo!

    Ich bin Anfänger mit WPF, habe aber ein wenig Programmiererfahrung mit C# und Winforms. Ich habe hier ein schönes Beispiel für einen netten Wipe Effekt zum Übergang zweier Bilder gefunden:

    URL: learnwpf.com/post/2006/10/03/How-can-I-create-a-e2809cwipee2809d-effect-to-transition-between-two-images-in-WPF.aspx

    (Leider darf ich keinen anklickbaren Link posten, da mein Konto noch nicht geprüft worden ist.)

    Leider verstehe ich nicht genau, wie er funktioniert. Ich würde Ihn gerne mehrfach verwenden, um eine Diashow mit x Bildern anzeigen zu lassen.

    Kann mir da bitte jemand auf die Sprünge helfen?

    Ciao, Armin


    Freitag, 30. Januar 2015 17:12

Antworten

  • Hallo,
    weißt du denn Grundsätzlich wie Storyboards und Animationen unter WPF funktionieren? Einfach gesagt haben die dahinter stehenden Klassen eine Methode die den Zustand für eine Bestimmte Zeit zurück gibt. Wenn man nun also eine Art Timer immer wieder diese Funktion aufrufen lässt, erhält man einen Verlauf von verschiedenen Werten.
    Bei einer DoubleAnimation könnten diese beispielsweise so aussehen: 0; 0.1; 0.2; 0.3; 0.4; 0.5; ...

    In dem von dir verlinkten Beitrag ist nun ein so genannter EventTrigger eingebaut. Dieser wird aufgerufen, wenn das angegebene Event (in dem Fall Window.Loaded) aufgerufen wird. BeginStoryBoard startet dann die Animation.

    Den DoubleAnimations wurden einmal das Zielelement (Storyboard.TargetName) und die Ziel-Eigenschaft (Storyboard.TargetProperty) zugewiesen. Wenn nun also die Animation gestartet wird, werden die angegebenen Eigenschaften schrittweise verändert.

    Wenn du nun weitere Bilder nach diesem Schema einbauen willst, kannst du einfach weitere Bilder wie das 2. einfügen, musst aber zunächst die GradientStops anders benennen. Wenn du nun weitere DoubleAnimations einfügst, die diese "Farb-Punkte" animieren, dann werden entsprechend nach und nach die anderen Bilder sichtbar.
    Über die BeginTime-Eigenschaft kannst du eine Verzögerung einbauen, wann die neuen Animationen los laufen sollen.

    Wenn es sehr viele Bilder werden könntest du die Animationen auch im Codebehind erstellen und dynamisch starten.

    PS: Um Links- und Bilder posten zu können, antworte bitte auf Verify Your Account, dafür ist ein Link in meiner Signatur.

    PPS: Ich habe den Typ des Threads in eine Frage geändert, sodass du eine Antwort markieren kannst, wenn alles für dich geklärt ist.

    PPPS: Aniamtionen sind ein sehr komplexes Thema, weswegen ich dich noch auf die MSDN verweisen möchte: Übersicht über Animationen Dort wird dann auch nochmal erklärt, wie man Animationen im Codebehind erstellt usw.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets


    Freitag, 30. Januar 2015 17:45
    Moderator