Compartilhar via


Método IDCompositionAnimation::AddCubic (dcompanimation.h)

Adiciona um segmento polinomial cúbico à função de animação.

Sintaxe

HRESULT AddCubic(
  [in] double beginOffset,
  [in] float  constantCoefficient,
  [in] float  linearCoefficient,
  [in] float  quadraticCoefficient,
  [in] float  cubicCoefficient
);

Parâmetros

[in] beginOffset

Tipo: duplo

O deslocamento, em segundos, desde o início da função de animação até o ponto em que esse segmento deve entrar em vigor.

[in] constantCoefficient

Tipo: float

O coeficiente constante do polinomial.

[in] linearCoefficient

Tipo: float

O coeficiente linear do polinomial.

[in] quadraticCoefficient

Tipo: float

O coeficiente quadrático do polinomial.

[in] cubicCoefficient

Tipo: float

O coeficiente cúbico do polinomial.

Valor retornado

Tipo: HRESULT

Se a função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT. Consulte Códigos de Erro do DirectComposition para obter uma lista de códigos de erro.

Comentários

Um segmento cúbico faz a transição do tempo ao longo de um polinomial cúbico. Para uma determinada entrada de tempo (t), o valor de saída é fornecido pela equação a seguir.

x(t) = at Consigo + bt² + ct + d

Esse método falhará se qualquer um dos parâmetros for NaN, infinito positivo ou infinito negativo.

Como os segmentos de animação devem ser adicionados em ordem crescente, esse método falhará se o parâmetro beginOffset for menor ou igual ao parâmetro beginOffset do segmento anterior, se houver.

Esse segmento de animação permanece em vigor até a hora de início do próximo segmento na função de animação. Se a função de animação não contiver mais segmentos, esse segmento permanecerá em vigor indefinidamente.

Se todos os coeficientes, exceto constantCoefficient , forem zero, o valor desse segmento permanecerá constante ao longo do tempo e a animação não causará uma recomposição durante o segmento.

Exemplos

O exemplo a seguir cria uma função de animação com dois segmentos polinômios cúbicos.

HRESULT DoAnimatedRotation(IDCompositionDevice *pDevice,
                           IDCompositionRotateTransform *pRotateTransform,
                           IDCompositionVisual *pVisual, 
                           float animationTime) 
{
    HRESULT hr = S_OK;
    IDCompositionAnimation *pAnimation = nullptr;

    // Create an animation object. 
    hr = pDevice->CreateAnimation(&pAnimation);

    if (SUCCEEDED(hr)) 
    {
        // Create the animation function by adding cubic polynomial segments.
        // For a given time input (t), the output value is
        // a*t^3 + b* t^2 + c*t + d.
        // 
        // The following segment will rotate the visual clockwise.
        pAnimation->AddCubic(
            0.0,                                // Begin offset
            0.0,                                // Constant coefficient - d
            (360.0f * 1.0f) / animationTime,    // Linear coefficient - c
            0.0,                                // Quadratic coefficient - b
            0.0);                               // Cubic coefficient - a

        // The following segment will rotate the visual counterclockwise.
        pAnimation->AddCubic(
            animationTime,
            0.0,
            -(360.0f * 1.0f) / animationTime,
            0.0,
            0.0);

        // Set the end of the animation.
        pAnimation->End(
            2 * animationTime,  // End offset
            0.0);               // End value

        // Apply the animation to the Angle property of the
        // rotate transform. 
        hr = pRotateTransform->SetAngle(pAnimation);
    }

    if (SUCCEEDED(hr))
    {
        // Apply the rotate transform object to a visual.
        hr = pVisual->SetTransform(pRotateTransform);
    }

    if (SUCCEEDED(hr))
    {
        // Commit the changes to the composition.
        hr = pDevice->Commit();
    }

    SafeRelease(&pAnimation);

    return hr;
}

Requisitos

   
Cliente mínimo com suporte Windows 8 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2012 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho dcompanimation.h
Biblioteca Dcomp.lib
DLL Dcomp.dll

Confira também

Animação

IDCompositionAnimation