Lesen der Werte der Animationsvariablen

Jedes Mal, wenn Ihre Anwendung zeichnet, sollte sie die aktuellen Werte der Animationsvariablen lesen, die die visuellen Merkmale darstellen, die animiert werden sollen.

Übersicht

Beim Zeichnen eines Frames kann eine Anwendung die IUIAnimationVariable::GetValue- oder IUIAnimationVariable::GetIntegerValue-Methode verwenden, um die Werte aller Animationsvariablen anzufordern, die sich auf Visuals innerhalb des Frames auswirken. Es ist möglich, eine Animationsvariable auf einen Wertebereich (SetLowerBound und SetUpperBound)zu beschneiden und anzufordern, dass ihr Wert mithilfe eines angegebenen Rundungsschemas (SetRoundingMode)auf eine ganze Zahl gerundet wird.

Anstatt die Werte aller Variablen für jeden Frame zu lesen, Eine Anwendung kann die IUIAnimationVariable::SetVariableChangeHandler- oder IUIAnimationVariable::SetVariableIntegerChangeHandler-Methode verwenden, um einen oder mehrere Variablenänderungshandler zu registrieren, um Benachrichtigungen nur dann zu empfangen, wenn eine Änderung am Variablenwert (IUIAnimationVariableChangeHandler::OnValueChanged) oder am gerundeten Wert (IUIAnimationVariableIntegerChangeHandler::OnIntegerValueChanged) vorgenommen wird. Um die Variablen zu identifizieren, die an Variablenänderungshandler übergeben werden, kann eine Anwendung tags auf Variablen anwenden, indem sie die IUIAnimationVariable::SetTag-Methode verwendet. Hierbei handelt es sich um Objektpaare (IUnknown), * ganzzahlige Paare, die von der Anwendung interpretiert werden.

Beispielcode

Der folgende Beispielcode stammt aus Thumbnail.cpp im Windows Animation sample Grid Layout; siehe die CMainWindow::Render-Methode. Sie verwendet die GetValue-Methode, um die Werte als Gleitkommawerte zu lesen.

// 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

        ...

    }
}

Der folgende Beispielcode stammt aus "MainWindow.cpp" im Windows Animation-Beispiel timergesteuerte Animation ; siehe die CMainWindow::D rawBackground-Methode. Sie verwendet die GetIntegerValue-Methode, um die Werte als ganzzahlige Werte zu lesen.

// 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

            ...

        }
    }

    ...

}

Vorheriger Schritt

Bevor Sie mit diesem Schritt beginnen, sollten Sie diesen Schritt abgeschlossen haben: Aktualisieren des Animations-Managers und Zeichnen von Frames.

Nächster Schritt

Nach Abschluss dieses Schritts ist der nächste Schritt: Erstellen eines Storyboards und Hinzufügen von Übergängen.

IUIAnimationVariable::GetIntegerValue

IUIAnimationVariable::GetValue

Windows Übersicht über Animationen