Leggere i valori delle variabili di animazione

Ogni volta che l'applicazione disegna, deve leggere i valori correnti delle variabili di animazione che rappresentano le caratteristiche visive da animare.

Panoramica

Quando si disegna una cornice, un'applicazione può usare il metodo IUIAnimationVariable::GetValue o IUIAnimationVariable::GetIntegerValue per richiedere i valori di qualsiasi variabile di animazione che influirà sugli oggetti visivi all'interno del frame. È possibile ritagliare una variabile di animazione in un intervallo di valori (SetLowerBound e SetUpperBound) e richiedere che il valore venga arrotondato a un numero intero usando uno schema di arrotondamento specificato (SetRoundingMode).

Invece di leggere i valori di tutte le variabili per ogni frame, un'applicazione può usare il metodo IUIAnimationVariable::SetVariableChangeHandler o IUIAnimationVariable::SetVariableIntegerChangeHandler per registrare uno o più gestori di modifiche variabili per ricevere notifiche solo quando è presente una modifica al valore delle variabili (IUIAnimationVariableChangeHandler::OnValueChanged) o un valore arrotondato (IUIAnimationVariableIntegerChangeHandler::OnIntegerValueChanged) ). Per identificare le variabili passate ai gestori di modifiche delle variabili, un'applicazione può applicare tag alle variabili usando il metodo IUIAnimationVariable::SetTag . Si tratta di oggetti (IUnknown*), coppie integer interpretate dall'applicazione.

Codice di esempio

Il codice di esempio seguente è tratto da Thumbnail.cpp nel layout griglia di esempio dell'animazione Di Windows; vedere il metodo CMainWindow::Render. Usa il metodo GetValue per leggere i valori come valori a virgola mobile.

// Get the x-coordinate and y-coordinate animation variable values

DOUBLE x=0;
hr = m_pAnimationVariableX->GetValue(&x);
if (SUCCEEDED(hr))
{
    DOUBLE y=0;
    hr = m_pAnimationVariableY->GetValue(&y);
    if (SUCCEEDED(hr))
    {
        // Draw the object

        ...

    }
}

Il codice di esempio seguente è tratto da MainWindow.cpp nell'esempio Animazione timer di Windows; vedere il metodo CMainWindow::D rawBackground. Usa il metodo GetIntegerValue per leggere i valori come valori interi.

// Get the RGB animation variable values

INT32 red;
HRESULT hr = m_pAnimationVariableRed->GetIntegerValue(
    &red
    );
if (SUCCEEDED(hr))
{
    INT32 green;
    hr = m_pAnimationVariableGreen->GetIntegerValue(
        &green
        );
    if (SUCCEEDED(hr))
    {
        INT32 blue;
        hr = m_pAnimationVariableBlue->GetIntegerValue(
            &blue
            );
        if (SUCCEEDED(hr))
        {
            // Set the RGB of the background brush to the new animated value

            ...
                
            // Paint the background

            ...

        }
    }

    ...

}

Passaggio precedente

Prima di iniziare questo passaggio, è necessario aver completato questo passaggio: Aggiornare Gestione animazioni e Disegnare fotogrammi.

passaggio successivo

Al termine di questo passaggio, il passaggio successivo è: Creare uno storyboard e Aggiungere transizioni.

IUIAnimationVariable::GetIntegerValue

IUIAnimationVariable::GetValue

Panoramica dell'animazione di Windows