Método IDCompositionAnimation::AddRepeat (dcompanimation.h)
Agrega un segmento de repetición que hace que se repita la parte especificada de una función de animación.
Sintaxis
HRESULT AddRepeat(
[in] double beginOffset,
[in] double durationToRepeat
);
Parámetros
[in] beginOffset
Tipo: double
Desplazamiento, en segundos, desde el principio de la animación hasta el punto en el que debe comenzar la repetición.
[in] durationToRepeat
Tipo: double
Duración, en segundos, de una parte de la animación inmediatamente anterior a la hora de inicio especificada por beginOffset. Esta es la parte que se repetirá.
Valor devuelto
Tipo: HRESULT
Si la función se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT. Consulte Códigos de error de DirectComposition para obtener una lista de códigos de error.
Comentarios
Este método produce un error si alguno de los parámetros es NaN, infinito positivo o infinito negativo.
Dado que los segmentos de animación se deben agregar en orden creciente, este método produce un error si el parámetro beginOffset es menor o igual que el parámetro beginOffset del segmento anterior. Este método también produce un error si se trata del primer segmento que se va a agregar a la función de animación.
Este segmento de animación permanece en vigor hasta la hora de inicio del siguiente segmento. Si la función de animación no contiene más segmentos, este segmento permanece en vigor indefinidamente.
Ejemplos
En el ejemplo siguiente se crea una función de animación que incluye un segmento de repetición y se aplica la animación a los ejes x e y de una transformación de escala.
HRESULT MyCreateAnimatedScaleTransform(IDCompositionDevice *pDevice,
IDCompositionVisual *pVisual)
{
HRESULT hr = S_OK;
IDCompositionAnimation *pAnimation = nullptr;
IDCompositionScaleTransform *pScaleTransform = nullptr;
// Validate the pointers.
if (pDevice == nullptr || pVisual == nullptr)
return E_INVALIDARG;
// Create an animation object.
hr = pDevice->CreateAnimation(&pAnimation);
if (SUCCEEDED(hr))
{
// Add segments to the animation function.
pAnimation->AddCubic(0, 1, -0.5, 0, 0);
pAnimation->AddRepeat(3.0, 3.0);
pAnimation->End(10, .5);
// Create a scale transform object.
hr = pDevice->CreateScaleTransform(&pScaleTransform);
}
if (SUCCEEDED(hr))
{
// Apply the animation to the x and y axes of the scale transform.
pScaleTransform->SetScaleX(pAnimation);
pScaleTransform->SetScaleY(pAnimation);
// Apply the scale transform to the visual.
hr = pVisual->SetTransform(pScaleTransform);
}
if (SUCCEEDED(hr))
{
// Commit the composition for rendering.
hr = pDevice->Commit();
}
// Clean up.
SafeRelease(&pAnimation);
SafeRelease(&pScaleTransform);
return hr;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2012 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | dcompanimation.h |
Library | Dcomp.lib |
Archivo DLL | Dcomp.dll |