Share via


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

Consulte también

IDCompositionAnimation