Metodo IDCompositionAnimation::AddRepeat (dcompanimation.h)

Aggiunge un segmento ripetuto che causa la ripetizione della parte specificata di una funzione di animazione.

Sintassi

HRESULT AddRepeat(
  [in] double beginOffset,
  [in] double durationToRepeat
);

Parametri

[in] beginOffset

Tipo: double

Offset, in secondi, dall'inizio dell'animazione al punto in cui deve iniziare la ripetizione.

[in] durationToRepeat

Tipo: double

Durata, in secondi, di una parte dell'animazione immediatamente precedente all'ora di inizio specificata da beginOffset. Questa è la parte che verrà ripetuta.

Valore restituito

Tipo: HRESULT

Se la funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT . Per un elenco di codici di errore, vedere Codici di errore DirectComposition .

Commenti

Questo metodo ha esito negativo se uno dei parametri è NaN, infinito positivo o infinito negativo.

Poiché i segmenti di animazione devono essere aggiunti in ordine crescente, questo metodo ha esito negativo se il parametro beginOffset è minore o uguale al parametro beginOffset del segmento precedente. Questo metodo ha esito negativo anche se si tratta del primo segmento da aggiungere alla funzione di animazione.

Questo segmento di animazione rimane effettivo fino all'ora di inizio del segmento successivo. Se la funzione di animazione non contiene più segmenti, questo segmento rimane in vigore in modo indefinito.

Esempio

L'esempio seguente crea una funzione di animazione che include un segmento ripetuto e applica l'animazione agli assi x e y di una trasformazione di scala.

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;
}

Requisiti

Requisito Valore
Client minimo supportato Windows 8 [solo app desktop]
Server minimo supportato Windows Server 2012 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione dcompanimation.h
Libreria Dcomp.lib
DLL Dcomp.dll

Vedi anche

IDCompositionAnimation