Condividi tramite


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 fotogramma. È possibile ritagliare una variabile di animazione in un intervallo di valori (SetLowerBound e SetUpperBound) e richiedere che il valore venga arrotondato a un 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 IUIAnimationVariable::SetVariableChangeHandler ometodo IUIAnimationVariable::SetVariableIntegerChangeHandler su registrare uno o più gestori di modifiche delle variabili per ricevere notifiche solo quando è presente una modifica al valore delle variabili (IUIAnimationVariableChangeHandler::OnValueChanged) o il valore arrotondato (IUIAnimationVariableIntegerChangeHandler::OnIntegerValueChanged). Per identificare le variabili passate ai gestori delle 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 nell'esempio Windows Animation layout a griglia, vedere il metodo CMainWindow::Render. Usa il metodoGetValueper 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 di animazione di Windows Timer-Driven Animation; vedere il metodo CMainWindow::DrawBackground. Usa il metodoGetIntegerValueper 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 animazione di Windows