Condividi tramite


Cenni preliminari sull'animazione di Windows

Questa panoramica fornisce un'introduzione a Gestione animazioni di Windows e si concentra su componenti e concetti chiave. Per ulteriori informazioni sugli storyboard e sulle transizioni, vedere la panoramica di Storyboard.

Questo argomento contiene le sezioni seguenti:

Concetti di base

Animation è una sequenza di immagini fisse successive che generano un'illusione di movimento quando vengono riprodotte. L'uso dell'animazione interattiva nell'interfaccia utente può offrire a un'applicazione una personalità unica e migliorare l'esperienza utente. L'animazione può aiutare a comunicare modifiche di stato principali nell'interfaccia utente e a gestire la complessità dell'interfaccia utente. L'animazione può anche aggiungere alla percezione dell'utente la qualità di un'applicazione.

Come esempi, l'animazione di Windows viene usata nella barra delle applicazioni per facilitare la gestione e l'accesso a file e programmi e lente di ingrandimento per ingrandire diverse parti dello schermo per renderle più facili da visualizzare agli utenti.

Le unità fondamentali di un'animazione sono la caratteristica di un elemento visivo da animare e la descrizione di come tale caratteristica cambia nel tempo. Un'applicazione può animare un'ampia gamma di caratteristiche, ad esempio posizione, colore, dimensioni, rotazione, contrasto e opacità.

In Animazione di Windows, una variabile di animazione rappresenta la caratteristica da animare. Una transizione descrive il modo in cui il valore della variabile di animazione cambia man mano che si verifica l'animazione. Ad esempio, un elemento visivo potrebbe avere una variabile di animazione che ne specifica l'opacità e un'azione dell'utente potrebbe generare una transizione che accetta tale opacità da un valore compreso tra 50 e 100, che rappresenta un'animazione da semitrasparente a completamente opacità.

Un storyboard è un set di transizioni applicate a una o più variabili di animazione nel tempo. Un'applicazione visualizza le animazioni creando e riproducendo storyboard e quindi disegnando sequenze di fotogrammi discreti man mano che i valori delle variabili di animazione cambiano nel tempo.

Componenti dell'animazione di Windows

L'animazione di Windows è costituita dai componenti seguenti:

gestione animazioni

Le applicazioni usano un oggetto di gestione animazioni per creare variabili di animazione e storyboard, animazioni di pianificazione e controllo e aggiornare le informazioni sullo stato prima che l'applicazione disegni ogni fotogramma. Un singolo oggetto di gestione animazioni gestisce in genere tutte le animazioni in un'applicazione e pertanto ha il controllo globale su tutti gli storyboard pianificati.

variabili di animazione

Prima di avviare qualsiasi animazione, un'applicazione deve creare oggetti variabili di animazione. Una variabile di animazione rappresenta un aspetto di un elemento visivo da animare. La variabile è un valore a virgola mobile scalare, anche se il valore può essere arrotondato a un valore intero.

Una variabile di animazione ha in genere la stessa durata dell'elemento visivo che deve animare. Il valore iniziale di una variabile di animazione viene specificato quando viene creata la variabile. Successivamente, il suo valore non può essere modificato direttamente; deve essere aggiornato tramite la gestione animazioni.

Una variabile di animazione può essere identificata da un tag , che è un'associazione di un identificatore integer con un puntatore a un oggetto COM. Un tag non deve essere univoco, a meno che l'applicazione non la usi per cercare una variabile. Per impostazione predefinita, una variabile di animazione non dispone di un tag e qualsiasi tentativo di lettura del tag avrà esito negativo finché non ne verrà impostata una.

sistema di temporizzazione

L'animazione di Windows include un sistema di temporizzazione che consente di garantire che il rendering delle animazioni venga eseguito a una frequenza dei fotogrammi uniforme e coerente, riducendo al contempo l'uso delle risorse di sistema per il rendering quando il sistema è occupato. Un timer consente di gestire il rendering dell'animazione indicando automaticamente il passaggio di una piccola unità di tempo, denominata tick . Il sistema di temporizzazione monitora le prestazioni complessive del rendering del sistema e limita le animazioni aumentando o riducendo dinamicamente la frequenza dei tick. Le applicazioni possono consentire a un timer di gestire l'animazione e registrare un gestore per ricevere una notifica prima e dopo l'aggiornamento del gestore per ogni tick. Le applicazioni possono specificare la frequenza minima dei fotogrammi di animazione accettabile per un timer e ricevere una notifica se la frequenza effettiva dei fotogrammi di un'animazione scende al di sotto di questa frequenza.

Per risparmiare risorse di sistema, è possibile configurare un timer per disabilitarsi quando non viene eseguita alcuna animazione.

API di animazione di Windows

L'API di animazione di Windows è un'API basata su COM a thread singolo che fornisce le funzionalità seguenti per gli sviluppatori:

  • Oggetto di gestione animazioni, UIAnimationManager, per la creazione di oggetti animazione e il controllo delle animazioni
  • Variabili di animazione e storyboard
  • Libreria di base, UIAnimationTransitionLibrary, di transizioni pronte all'uso
  • Oggetto timer, UIAnimationTimer, per determinare l'ora corrente e, facoltativamente, per l'animazione di guida
  • Ganci di eventi per il monitoraggio dello stato e dell'avanzamento dell'animazione

Per informazioni di riferimento complete sull'API, vedere Informazioni di riferimento sulle animazioni di Windows. Per esempio di codice, vedere le attività di Windows Animation e gli esempi di Windows Animation .

Configurazioni

Le applicazioni devono ottenere l'ora corrente prima di pianificare una nuova animazione. I seguenti sono i meccanismi di temporizzazione supportati da Windows Animation:

Animazione Application-Driven

Le applicazioni che usano un'API grafica con accelerazione hardware possono eseguire la sincronizzazione con la frequenza di aggiornamento del monitor per eseguire il rendering di animazioni uniformi. In alternativa, un'applicazione può usare un meccanismo di temporizzazione autonomo per determinare quando disegnare ogni fotogramma di un'animazione. In entrambi i casi, l'applicazione indicherà alla gestione animazioni quando aggiornarne lo stato. È comunque possibile usare un timer di animazione per determinare l'ora corrente con precisione elevata, nelle unità richieste dal gestore animazioni.

Il diagramma seguente mostra le interazioni tra un'applicazione e i componenti animazione di Windows quando l'applicazione guida direttamente gli aggiornamenti delle animazioni.

diagramma che mostra le interazioni tra un'applicazione e i componenti di animazione di Windows quando l'applicazione sta guidando direttamente gli aggiornamenti delle animazioni.

Nella configurazione più semplice, un'applicazione ridisegnerà tutto ogni volta che lo schermo viene aggiornato, anche quando non vengono riprodotte animazioni. Per evitare sprechi di lavoro, un'applicazione può registrare un gestore eventi di gestione per ricevere una notifica quando sono pianificate animazioni e può rilevare quando la pianificazione è vuota in modo che possa interrompere il ridisegno.

Animazione Timer-Driven

Invece di aggiornare direttamente la gestione animazioni, le applicazioni possono consentire al timer di animazione di indicare al gestore di animazioni quando aggiornarne lo stato e ricevere semplicemente una notifica quando si è verificato ogni aggiornamento. Questo approccio è consigliato per le API grafiche meno recenti. In generale, se è possibile eseguire la sincronizzazione con la frequenza di aggiornamento del monitor, è preferibile farlo e usare l'animazione basata sull'applicazione.

Il diagramma seguente mostra le interazioni tra un'applicazione e i componenti animazione di Windows quando il timer di animazione guida gli aggiornamenti delle animazioni.

diagramma che mostra le interazioni tra un'applicazione e i componenti di animazione di Windows quando il timer di animazione guida gli aggiornamenti delle animazioni.

Il timer può essere configurato per l'esecuzione solo quando le animazioni sono pianificate; in questo modo è una semplice questione di passare un determinato parametro quando il timer e la gestione animazione sono connessi.

Funzionalità avanzate

Oltre a una base di base per supportare l'animazione, l'animazione di Windows include il supporto per diverse tecniche di animazione avanzate, tra cui:

durata sensibile al contesto

La durata di una transizione non deve essere fissa; può essere determinato in base al valore e alla velocità della variabile animata all'inizio della transizione.

velocità corrispondente

Il movimento è generalmente più piacevole per l'occhio se la posizione e la velocità di un oggetto in movimento non saltano istantaneamente tra i valori. Quando un nuovo storyboard interrompe quello attualmente in riproduzione, la corrispondenza della velocità consente al nuovo storyboard di riprendere senza problemi dove è terminato quello precedente.

gestione dei conflitti

Se due storyboard devono aggiornare contemporaneamente la stessa variabile di animazione, si verifica un conflitto di pianificazione. Anziché richiedere una priorità numerica specifica per ogni storyboard, l'animazione di Windows consente all'applicazione di determinare le priorità relative di due storyboard.

Gestione della contesa

Gli sviluppatori possono implementare un callback di confronto di priorità per confrontare la priorità dello storyboard da pianificare con quella dello storyboard già incluso nella pianificazione. Un'applicazione che implementa un confronto di priorità può usare qualsiasi logica preferita per determinare quando uno storyboard precede un altro. Per risolvere il conflitto di pianificazione, l'animazione di Windows chiede all'applicazione quale di queste azioni può essere eseguita, nell'ordine seguente:

  • Annulla lo storyboard programmato. Se lo storyboard programmato non ha ancora iniziato a essere riprodotto, potrebbe essere annullato e rimosso immediatamente dal programma.
  • Taglia lo storyboard pianificato. Quando un nuovo storyboard taglia uno storyboard pianificato, lo storyboard pianificato smette di influire sulla variabile non appena il nuovo storyboard inizia ad animarlo. Le velocità vengono abbinate, consentendo al nuovo storyboard di riprendere senza problemi la precedente.
  • Completa lo storyboard pianificato. Uno storyboard può essere concluso solo se contiene un ciclo che si ripete per un periodo illimitato. Se lo storyboard si trova in un ciclo di questo tipo al termine, la ripetizione corrente viene completata e il resto dello storyboard viene riprodotto. Se il ciclo non è ancora iniziato al termine di uno storyboard, il ciclo viene ignorato completamente.
  • Comprimere lo storyboard pianificato. Se il trimming o l'annullamento dello storyboard pianificato non è un'opzione, lo storyboard può essere completato. L'animazione di Windows introduce la possibilità di comprimere il tempo disponibile per lo storyboard pianificato (e gli storyboard pianificati prima), in modo che le variabili raggiungano il loro stato finale più rapidamente. Quando viene applicata la compressione, il tempo viene temporaneamente accelerato per gli storyboard interessati, in modo che vengano riprodotti più velocemente.

Se nessuna delle azioni precedenti è consentita dagli oggetti di confronto di priorità registrati, il tentativo di pianificare il nuovo storyboard ha esito negativo. Per impostazione predefinita, è possibile tagliare, concludere o comprimere tutti gli storyboard per evitare errori, ma nessuno può essere annullato.

Il diagramma seguente illustra il ciclo di vita di uno storyboard, usando gli stati definiti dall'enumerazione UI_ANIMATION_STORYBOARD_STATUS. Le applicazioni usano l'API animazione di Windows per creare uno storyboard e inviarlo per la pianificazione. Il gestore di animazioni pianifica lo storyboard e gestisce l'animazione.

diagramma che mostra come la gestione animazioni pianifica lo storyboard e gestisce l'animazione.

Per ulteriori informazioni sulla pianificazione e la gestione dello storyboard, vedere la Panoramica dello Storyboard .

riferimento all'animazione di Windows

Esempi di animazioni di Windows

attività di animazione di Windows