IdCompositionAnimation ::AddRepeat, méthode (dcompanimation.h)
Ajoute un segment de répétition qui entraîne la répétition de la partie spécifiée d’une fonction d’animation.
Syntaxe
HRESULT AddRepeat(
[in] double beginOffset,
[in] double durationToRepeat
);
Paramètres
[in] beginOffset
Type : double
Décalage, en secondes, entre le début de l’animation et le point auquel la répétition doit commencer.
[in] durationToRepeat
Type : double
Durée, en secondes, d’une partie de l’animation qui précède immédiatement l’heure de début spécifiée par beginOffset. Il s’agit de la partie qui sera répétée.
Valeur retournée
Type : HRESULT
Si la fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT. Pour obtenir la liste des codes d’erreur, consultez Codes d’erreur DirectComposition .
Remarques
Cette méthode échoue si l’un des paramètres est NaN, l’infini positif ou l’infini négatif.
Étant donné que les segments d’animation doivent être ajoutés dans l’ordre croissant, cette méthode échoue si le paramètre beginOffset est inférieur ou égal au paramètre beginOffset du segment précédent. Cette méthode échoue également s’il s’agit du premier segment à ajouter à la fonction d’animation.
Ce segment d’animation reste en vigueur jusqu’à l’heure de début du segment suivant. Si la fonction d’animation ne contient plus de segments, ce segment reste en vigueur indéfiniment.
Exemples
L’exemple suivant crée une fonction d’animation qui inclut un segment de répétition et applique l’animation aux axes x et y d’une transformation d’échelle.
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;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2012 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | dcompanimation.h |
Bibliothèque | Dcomp.lib |
DLL | Dcomp.dll |