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.
Tópicos relacionados