Delen via


De waarden van de animatievariabele lezen

Telkens wanneer uw toepassing tekent, moet deze de huidige waarden lezen van de animatievariabelen die de visuele kenmerken vertegenwoordigen die moeten worden geanimeerd.

Overzicht

Wanneer u een frame tekent, kan een toepassing de methode IUIAnimationVariable::GetValue of IUIAnimationVariable::GetIntegerValue gebruiken om de waarden aan te vragen van animatievariabelen die van invloed zijn op visuals in het frame. Het is mogelijk om een animatievariabele te knippen op een bereik van waarden (SetLowerBound en SetUpperBound), en om de waarde ervan te afronden op een geheel getal met behulp van een opgegeven afrondingsschema (SetRoundingMode).

In plaats van de waarden van alle variabelen voor elk frame te lezen, kan een toepassing de methode IUIAnimationVariable::SetVariableChangeHandler of IUIAnimationVariable::SetVariableIntegerChangeHandler gebruiken om een of meer wijzigingshandlers voor variabelen te registreren om alleen meldingen te ontvangen wanneer er een wijziging is in de waarde van de variabelen (IUIAnimationVariableChangeHandler::OnValueChanged) of de afgeronde waarde (IUIAnimationVariableIntegerChangeHandler::OnIntegerValueChanged). Een toepassing kan tags toepassen op variabelen met behulp van de methode IUIAnimationVariable::SetTag om de variabelen te identificeren die zijn doorgegeven aan variabele wijzigingshandlers. Dit zijn paren van objecten (IUnknown*) en gehele getallen die door de toepassing worden geïnterpreteerd.

Voorbeeldcode

De volgende voorbeeldcode is afkomstig uit Thumbnail.cpp in het Voorbeeld van Windows-animatie Rasterindeling; zie de methode CMainWindow::Render. Hierbij wordt de methode GetValue gebruikt om de waarden als waardes met een zwevende komma te lezen.

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

        ...

    }
}

De volgende voorbeeldcode is afkomstig uit MainWindow.cpp in het Windows Animation voorbeeld Timer-Driven Animatie; zie de methode CMainWindow::DrawBackground. Hierbij wordt de methode GetIntegerValue gebruikt om de waarden als geheel getalwaarden te lezen.

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

            ...

        }
    }

    ...

}

Vorige stap

Voordat u met deze stap begint, moet u deze stap hebben voltooid: Animatiebeheer bijwerken en frames tekenen.

Volgende stap

Nadat u deze stap hebt voltooid, is de volgende stap: Een Storyboard maken en Overgangen toevoegen.

IUIAnimationVariable::GetIntegerValue

IUIAnimationVariable::GetValue

Overzicht van Windows-animaties