Share via


Ler os valores da variável de animação

Sempre que o aplicativo pinta, ele deve ler os valores atuais das variáveis de animação que representam as características visuais a serem animadas.

Visão geral

Ao desenhar um quadro, um aplicativo pode usar o método IUIAnimationVariable::GetValue ou IUIAnimationVariable::GetIntegerValue para solicitar os valores de quaisquer variáveis de animação que afetarão os visuais dentro do quadro. É possível cortar uma variável de animação para um intervalo de valores (SetLowerBound e SetUpperBound) e solicitar que seu valor seja arredondado para um inteiro usando um esquema de arredondamento especificado (SetRoundingMode).

Em vez de ler os valores de todas as variáveis para cada quadro, um aplicativo pode usar o método IUIAnimationVariable::SetVariableChangeHandler ou IUIAnimationVariable::SetVariableIntegerChangeHandler para registrar um ou mais manipuladores de alteração variável para receber notificações somente quando houver uma alteração no valor das variáveis (IUIAnimationVariableChangeHandler::OnValueChanged) ou valor arredondado (IUIAnimationVariableIntegerChangeHandler::OnIntegerValueChanged ). Para identificar as variáveis passadas para manipuladores de alteração variável, um aplicativo pode aplicar marcas a variáveis usando o método IUIAnimationVariable::SetTag . São pares inteiros de objeto (IUnknown*), interpretados pelo aplicativo.

Código de exemplo

O código de exemplo a seguir é obtido de Thumbnail.cpp no layout de grade de exemplo de Animação do Windows; consulte o método CMainWindow::Render. Ele usa o método GetValue para ler os valores como valores de ponto flutuante.

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

        ...

    }
}

O código de exemplo a seguir é obtido de MainWindow.cpp na animação controlada por temporizador de exemplo de animação do Windows; consulte o método CMainWindow::D rawBackground. Ele usa o método GetIntegerValue para ler os valores como valores inteiros.

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

            ...

        }
    }

    ...

}

Etapa anterior

Antes de iniciar esta etapa, você deve ter concluído esta etapa: Atualizar o Gerenciador de Animação e Desenhar Quadros.

Próxima etapa

Depois de concluir esta etapa, a próxima etapa é: Criar um Storyboard e Adicionar Transições.

IUIAnimationVariable::GetIntegerValue

IUIAnimationVariable::GetValue

Visão geral da animação do Windows