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 in einen Wertebereich (SetLowerBound und SetUpperBound) zu schneiden 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 nur dann Benachrichtigungen zu empfangen, wenn sie vorhanden sind. ist eine Änderung des Variablenwerts (IUIAnimationVariableChangeHandler::OnValueChanged) oder des gerundeten Werts (IUIAnimationVariableIntegerChangeHandler::OnIntegerValueChanged) ). Um die an Variablenänderungshandler übergebenen Variablen zu identifizieren, kann eine Anwendung Tags mithilfe der IUIAnimationVariable::SetTag-Methode auf Variablen anwenden. Hierbei handelt es sich um Objektpaare (IUnknown*), ganzzahlige Paare, die von der Anwendung interpretiert werden.

Beispielcode

Der folgende Beispielcode stammt aus Thumbnail.cpp im Rasterlayout des Windows-Animationsbeispiels; 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-Animationsbeispiel Timer-Driven Animation; Siehe die CMainWindow::D rawBackground-Methode. Es 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

Nachdem Sie diesen Schritt abgeschlossen haben, lautet der nächste Schritt: Erstellen eines Storyboards und Hinzufügen von Übergängen.

IUIAnimationVariable::GetIntegerValue

IUIAnimationVariable::GetValue

Übersicht über Windows-Animationen