Erstellen von Animationsvariablen

Eine Anwendung muss eine Animationsvariable für jedes visuelle Merkmal erstellen, das mithilfe von Windows-Animation animiert werden soll.

Übersicht

Animationsvariablen werden mithilfe des Animations-Managers erstellt, und die Anwendung sollte einen Verweis auf jede dieser Variablen so lange beibehalten, wie er benötigt wird. Ihre Anwendung erstellt im Allgemeinen jede Animationsvariable gleichzeitig mit dem visuellen Objekt, das sie animiert.

Wenn eine Animationsvariable erstellt wird, muss deren Anfangswert angegeben werden. Danach kann der Wert nur noch durch die Planung von Storyboards geändert werden, die ihn animieren.

Animationsvariablen werden als Parameter übergeben, wenn Storyboards erstellt werden. Daher sollte die Anwendung sie erst freigeben, wenn die visuellen Merkmale, die sie darstellen, nicht mehr animiert werden müssen, in der Regel, wenn die zugeordneten visuellen Objekte zerstört werden.

Beispielcode

Animieren von Farben

Der folgende Beispielcode stammt aus "MainWindow.cpp" in den Beispielen "Anwendungsgesteuerte Animation" und "Timergesteuerte Animation". Im Beispiel werden drei Animationsvariablen mit CreateAnimationVariable erstellt, um Hintergrundfarben darzustellen. Der Code verwendet auch die Methoden SetLowerBound und SetUpperBound , um den Wert der Animationsvariablen zu steuern.

const DOUBLE INITIAL_RED = COLOR_MAX;
const DOUBLE INITIAL_GREEN = COLOR_MAX;
const DOUBLE INITIAL_BLUE = COLOR_MAX;

HRESULT hr = m_pAnimationManager->CreateAnimationVariable(
    INITIAL_RED,
    &m_pAnimationVariableRed
    );
if (SUCCEEDED(hr))
{
    hr = m_pAnimationVariableRed->SetLowerBound(COLOR_MIN);
    if (SUCCEEDED(hr))
    {
        hr = m_pAnimationVariableRed->SetUpperBound(COLOR_MAX);
        if (SUCCEEDED(hr))
        {
            hr = m_pAnimationManager->CreateAnimationVariable(
                INITIAL_GREEN,
                &m_pAnimationVariableGreen
                );
            if (SUCCEEDED(hr))
            {
                hr = m_pAnimationVariableGreen->SetLowerBound(COLOR_MIN);
                if (SUCCEEDED(hr))
                {
                    hr = m_pAnimationVariableGreen->SetUpperBound(COLOR_MAX);
                    if (SUCCEEDED(hr))
                    {
                        hr = m_pAnimationManager->CreateAnimationVariable(
                            INITIAL_BLUE,
                            &m_pAnimationVariableBlue
                            );
                        if (SUCCEEDED(hr))
                        {
                            hr = m_pAnimationVariableBlue->SetLowerBound(COLOR_MIN);
                            if (SUCCEEDED(hr))
                            {
                                hr = m_pAnimationVariableBlue->SetUpperBound(COLOR_MAX);
                            }
                        }
                    }
                }
            }
        }
    }
}

Beachten Sie die folgenden Definitionen von MainWindow.h.

class CMainWindow
{

    ...

private:

    // Animated Variables

    IUIAnimationVariable *m_pAnimationVariableRed;
    IUIAnimationVariable *m_pAnimationVariableGreen;
    IUIAnimationVariable *m_pAnimationVariableBlue;

    ...

};

Animieren von x- und y-Koordinaten

Der folgende Beispielcode stammt aus Thumbnail.cpp im Windows Animation Grid Layout Sample; Siehe CMainWindow::CreateAnimationVariables-Methode. Zwei Animationsvariablen werden erstellt, um die X- und Y-Koordinaten jedes Objekts darzustellen.

// Create the animation variables for the x and y coordinates

hr = m_pAnimationManager->CreateAnimationVariable(
    xInitial,
    &m_pAnimationVariableX
    );

if (SUCCEEDED(hr))
{
    hr = m_pAnimationManager->CreateAnimationVariable(
        yInitial,
        &m_pAnimationVariableY
        );

    ...

}

Beachten Sie die folgenden Definitionen aus Thumbnail.h.

class CThumbnail
{
public:

    ...

    // X and Y Animation Variables

    IUIAnimationVariable *m_pAnimationVariableX;
    IUIAnimationVariable *m_pAnimationVariableY;

    ...

};

Animationsvariablen sind Gleitkommazahlen, aber ihre Werte können auch als ganze Zahlen abgerufen werden. Standardmäßig wird jeder Wert auf die nächste ganze Zahl gerundet, aber es ist möglich, den für eine Variable verwendeten Rundungsmodus zu überschreiben. Der folgende Beispielcode verwendet die SetRoundingMode-Methode , um anzugeben, dass die Werte immer abgerundet werden sollen.

hr = m_pAnimationVariableX->SetRoundingMode(
    UI_ANIMATION_ROUNDING_MODE_FLOOR
    );
if (SUCCEEDED(hr))
{
    hr = m_pAnimationVariableY->SetRoundingMode(
        UI_ANIMATION_ROUNDING_MODE_FLOOR
        );

    ...

}

Vorheriger Schritt

Bevor Sie mit diesem Schritt beginnen, sollten Sie diesen Schritt abgeschlossen haben: Erstellen der Hauptanimationsobjekte.

Nächster Schritt

Nachdem Sie diesen Schritt abgeschlossen haben, lautet der nächste Schritt: Aktualisieren des Animations-Managers und Zeichnen von Frames.

IUIAnimationManager::CreateAnimationVariable

IUIAnimationVariable::SetLowerBound

IUIAnimationVariable::SetRoundingMode

IUIAnimationVariable::SetUpperBound

Übersicht über Windows-Animationen