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 |