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.
Argomenti correlati