Übersicht über Windows-Animationen

Diese Übersicht bietet eine Einführung in den Windows-Animations-Manager und konzentriert sich auf wichtige Komponenten und Konzepte. Weitere Informationen zu Storyboards und Übergängen finden Sie unter Übersicht über Storyboards.

Dieses Thema enthält folgende Abschnitte:

Grundlegende Konzepte

Animation ist eine Sequenz aufeinanderfolgender Standbilder, die eine Illusion der Bewegung erzeugt, wenn sie wiedergegeben werden. Die Verwendung interaktiver Animationen in der Benutzeroberfläche kann einer Anwendung eine einzigartige Persönlichkeit verleihen und die Benutzererfahrung verbessern. Animationen können dabei helfen, wichtige Zustandsänderungen in der Benutzeroberfläche zu kommunizieren und die Komplexität der Benutzeroberfläche zu verwalten. Animationen können auch zur Wahrnehmung der Qualität einer Anwendung durch den Benutzer beitragen.

Als Beispiele wird Windows-Animation in der Taskleiste verwendet, um Ihnen zu helfen, Dateien und Programme zu verwalten und darauf zuzugreifen, und die Bildschirmlupe, um verschiedene Teile des Bildschirms zu vergrößern, um sie für Benutzer einfacher zu sehen.

Die grundlegenden Einheiten einer Animation sind das Merkmal eines visuellen Elements, das animiert werden soll, und die Beschreibung, wie sich dieses Merkmal im Laufe der Zeit ändert. Eine Anwendung kann eine Vielzahl von Merkmalen wie Position, Farbe, Größe, Drehung, Kontrast und Deckkraft animieren.

In Der Windows-Animation stellt eine Animationsvariable das animierte Merkmal dar. Ein Übergang beschreibt, wie sich der Wert dieser Animationsvariable ändert, wenn die Animation auftritt. Beispielsweise kann ein visuelles Element über eine Animationsvariable verfügen, die seine Deckkraft angibt, und eine Benutzeraktion könnte einen Übergang generieren, der diese Deckkraft von einem Wert von 50 auf 100 annimmt und eine Animation von halbtransparent zu vollständig undurchsichtig darstellt.

Ein Storyboard besteht aus einer Reihe von Übergängen, die im Laufe der Zeit auf eine oder mehrere Animationsvariablen angewendet werden. Eine Anwendung zeigt Animationen an, indem Storyboards erstellt und wiedergegeben und dann Sequenzen einzelner Frames gezeichnet werden, wenn sich die Werte von Animationsvariablen im Laufe der Zeit ändern.

Komponenten der Windows-Animation

Windows-Animation besteht aus den folgenden Komponenten:

Animations-Manager

Anwendungen verwenden ein Animations-Manager-Objekt, um Animationsvariablen und Storyboards zu erstellen, Animationen zu planen und zu steuern und Zustandsinformationen zu aktualisieren, bevor die Anwendung jeden Frame zeichnet. Ein einzelnes Animations-Manager-Objekt verwaltet in der Regel alle Animationen in einer Anwendung und hat daher die globale Kontrolle über alle geplanten Storyboards.

Animationsvariablen

Vor dem Starten von Animationen muss eine Anwendung Animationsvariablenobjekte erstellen. Eine Animationsvariable stellt einen Aspekt eines visuellen Elements dar, das animiert werden soll. Die Variable ist ein skalarer Gleitkommawert, obwohl der Wert auf einen ganzzahligen Wert gerundet werden kann.

Eine Animationsvariable hat in der Regel dieselbe Lebensdauer wie das visuelle Element, das sie animieren soll. Der Anfangswert einer Animationsvariablen wird angegeben, wenn die Variable erstellt wird. Danach kann sein Wert nicht direkt geändert werden; Sie muss über den Animations-Manager aktualisiert werden.

Eine Animationsvariable kann durch ein Tag identifiziert werden, bei dem es sich um eine Kopplung eines ganzzahligen Bezeichners mit einem Zeiger auf ein COM-Objekt handelt. Ein Tag muss nicht eindeutig sein, es sei denn, die Anwendung verwendet es, um nach einer Variablen zu suchen. Standardmäßig verfügt eine Animationsvariable über kein Tag, und alle Versuche, ihr Tag zu lesen, schlagen fehl, bis eine festgelegt wurde.

Zeitsteuerungssystem

Windows-Animation enthält ein Zeitsteuerungssystem, mit dem sichergestellt wird, dass Animationen mit einer reibungslosen und konsistenten Bildfrequenz gerendert werden, während gleichzeitig die Verwendung von Systemressourcen für das Rendern reduziert wird, wenn das System ausgelastet ist. Ein Timer hilft beim Verwalten des Animationsrenderings, indem er automatisch den Verlauf einer kleinen Zeiteinheit angibt, die als Tick bezeichnet wird. Das Zeitsteuerungssystem überwacht die Gesamtleistung des Systemrenderings und drosselt Animationen, indem es die Häufigkeit von Ticks dynamisch erhöht oder verringert. Anwendungen können einen Timer den Animations-Manager steuern lassen und einen Handler registrieren, der vor und nach dem Aktualisieren des Managers für jeden Teilstrich benachrichtigt wird. Anwendungen können die minimale zulässige Animationsbildrate für einen Timer angeben und benachrichtigt werden, wenn die tatsächliche Bildfrequenz einer Animation unter diese Rate fällt.

Um Systemressourcen zu schonen, kann ein Timer so konfiguriert werden, dass er sich selbst deaktiviert, wenn keine Animation stattfindet.

Die Windows-Animations-API

Die Windows-Animations-API ist eine COM-basierte Singlethread-API, die die folgenden Features für Entwickler bereitstellt:

Die vollständige API-Referenz finden Sie in der Windows-Animationsreferenz. Beispielcode finden Sie unter Windows-Animationsaufgaben und Windows-Animationsbeispiele.

Configurations

Anwendungen müssen die aktuelle Zeit abrufen, bevor sie eine neue Animation planen. Im Folgenden werden die von der Windows-Animation unterstützten Zeitsteuerungsmechanismen aufgeführt:

Application-Driven Animation

Anwendungen, die eine hardwarebeschleunigte Grafik-API verwenden, können mit der Aktualisierungsrate des Monitors synchronisiert werden, um flüssige Animationen zu rendern. Alternativ kann eine Anwendung einen eigenen Zeitsteuerungsmechanismus verwenden, um zu bestimmen, wann die einzelnen Frame einer Animation gezeichnet werden sollen. In beiden Fällen teilt die Anwendung dem Animations-Manager mit, wann der Zustand aktualisiert werden soll. Ein Animationstimer kann weiterhin verwendet werden, um die aktuelle Zeit mit hoher Genauigkeit in den vom Animations-Manager benötigten Einheiten zu bestimmen.

Das folgende Diagramm zeigt die Interaktionen zwischen einer Anwendung und den Windows-Animationskomponenten, wenn die Anwendung Animationsupdates direkt antreibt.

Diagramm, das die Interaktionen zwischen einer Anwendung und den Windows-Animationskomponenten zeigt, wenn die Anwendung Animationsupdates direkt antreibt.

In der einfachsten Konfiguration zeichnet eine Anwendung bei jeder Bildschirmaktualisierung alles neu, auch wenn keine Animationen wiedergegeben werden. Um verschwendete Arbeit zu vermeiden, kann eine Anwendung einen Manager-Ereignishandler registrieren, um benachrichtigt zu werden, wenn Animationen geplant sind, und kann erkennen, wann der Zeitplan leer ist, sodass er das Neuzeichnen beenden kann.

Timer-Driven Animation

Anstatt den Animations-Manager direkt zu aktualisieren, können Anwendungen den Animationstimer dem Animations-Manager mitteilen, wann der Status aktualisiert werden soll, und werden einfach benachrichtigt, wenn jedes Update erfolgt ist. Dieser Ansatz wird für ältere Grafik-APIs empfohlen. Wenn eine Synchronisierung mit der Aktualisierungsrate des Monitors möglich ist, empfiehlt es sich im Allgemeinen, dies zu tun und anwendungsgesteuerte Animationen zu verwenden.

Das folgende Diagramm zeigt die Interaktionen zwischen einer Anwendung und den Windows-Animationskomponenten, wenn der Animationstimer Animationsupdates antreibt.

Diagramm, das die Interaktionen zwischen einer Anwendung und den Windows-Animationskomponenten zeigt, wenn der Animationstimer Animationsupdates antreibt.

Der Timer kann so konfiguriert werden, dass er nur ausgeführt wird, wenn die Animationen geplant sind. Dies ist eine einfache Angelegenheit der Übergabe eines bestimmten Parameters, wenn der Timer und der Animations-Manager verbunden sind.

Erweiterte Funktionen

Über eine grundlegende Grundlage für die Unterstützung von Animationen hinaus bietet Windows Animation Unterstützung für mehrere erweiterte Animationstechniken, einschließlich:

kontextabhängige Dauer

Die Dauer eines Übergangs muss nicht festgelegt werden; sie kann basierend auf dem Wert und der Geschwindigkeit der animierten Variablen bestimmt werden, wenn der Übergang beginnt.

Geschwindigkeitsabgleich

Bewegung ist im Allgemeinen angenehmer für das Auge, wenn die Position und Geschwindigkeit eines sich bewegenden Objekts nicht sofort zwischen Werten springen. Wenn ein neues Storyboard ein gerade wiedergegebenes Storyboard unterbricht, ermöglicht der Geschwindigkeitsabgleich, dass das neue Storyboard reibungslos an dem Ort annimmt, an dem das vorherige aufgehört hat.

Konfliktverwaltung

Wenn zwei Storyboards dieselbe Animationsvariable gleichzeitig aktualisieren müssen, tritt ein Zeitplanungskonflikt auf. Anstatt für jedes Storyboard eine bestimmte numerische Priorität zu erfordern, ermöglicht Windows-Animation der Anwendung, die relativen Prioritäten von zwei beliebigen Storyboards zu bestimmen.

Konfliktverwaltung

Entwickler können einen Rückruf zum Prioritätsvergleich implementieren, um die Priorität des geplanten Storyboards und des Storyboards zu vergleichen, das bereits im Zeitplan enthalten ist. Eine Anwendung, die einen Prioritätsvergleich implementiert, kann eine beliebige bevorzugte Logik verwenden, um zu bestimmen, wann ein Storyboard einem anderen voraussetzt. Um den Terminplanungskonflikt zu beheben, fragt Windows Animation die Anwendung, welche dieser Aktionen in der folgenden Reihenfolge ausgeführt werden können:

  • Abbrechen des geplanten Storyboards. Wenn das geplante Storyboard noch nicht mit der Wiedergabe begonnen hat, wird es möglicherweise abgebrochen und sofort aus dem Zeitplan entfernt.
  • Kürzen Sie das geplante Storyboard. Wenn ein neues Storyboard ein geplantes Storyboard schneidet, wirkt sich das geplante Storyboard nicht mehr auf die Variable aus, sobald das neue Storyboard beginnt, es zu animieren. Die Geschwindigkeiten werden angeglichen, sodass das neue Storyboard problemlos an dem Ort angreift, an dem das vorherige aufgehört hat.
  • Schließen Sie das geplante Storyboard ab. Ein Storyboard kann nur abgeschlossen werden, wenn es eine Schleife enthält, die sich unbegrenzt wiederholt. Wenn sich das Storyboard beim Abschluss in einer solchen Schleife befindet, wird die aktuelle Wiederholung abgeschlossen, und der Rest des Storyboards wird dann wiedergegeben. Wenn die Schleife beim Abschluss eines Storyboards noch nicht begonnen hat, wird die Schleife vollständig übersprungen.
  • Komprimieren Sie das geplante Storyboard. Wenn das Kürzen oder Abbrechen des geplanten Storyboards keine Option ist, darf das Storyboard abgeschlossen werden. Windows Animation bietet die Möglichkeit, die verfügbare Zeit für das geplante Storyboard (und alle zuvor geplanten Storyboards) zu komprimieren, damit die Variablen schneller ihren endgültigen Zustand erreichen. Wenn die Komprimierung angewendet wird, wird die Zeit für betroffene Storyboards vorübergehend beschleunigt, sodass sie schneller wiedergegeben werden.

Wenn keine der oben genannten Aktionen von den registrierten Prioritätsvergleichsobjekten zulässig ist, schlägt der Versuch, das neue Storyboard zu planen, fehl. Standardmäßig können alle Storyboards gekürzt, abgeschlossen oder komprimiert werden, um Fehler zu verhindern, aber keines kann abgebrochen werden.

Das folgende Diagramm zeigt den Lebenszyklus eines Storyboards unter Verwendung der durch die UI_ANIMATION_STORYBOARD_STATUS-Enumeration definierten Zustände. Anwendungen verwenden die Windows-Animations-API, um ein Storyboard zu erstellen und zur Planung zu übermitteln. Der Animations-Manager plant das Storyboard und verwaltet die Animation.

Diagramm, das zeigt, wie der Animations-Manager das Storyboard plant und die Animation verwaltet.

Weitere Informationen zur Planung und Verwaltung von Storyboards finden Sie unter Übersicht über Storyboards.

Windows-Animationsreferenz

Windows-Animationsbeispiele

Windows-Animationsaufgaben