Metodo IDCompositionAnimation::AddCubic (dcompanimation.h)

Aggiunge un segmento polinomiale cubico alla funzione di animazione.

Sintassi

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

Parametri

[in] beginOffset

Tipo: double

Offset, espresso in secondi, dall'inizio della funzione di animazione al punto in cui questo segmento deve avere effetto.

[in] constantCoefficient

Tipo: float

Coefficiente costante del polinomio.

[in] linearCoefficient

Tipo: float

Coefficiente lineare del polinomio.

[in] quadraticCoefficient

Tipo: float

Coefficiente quadratico del polinomio.

[in] cubicCoefficient

Tipo: float

Coefficiente cubico del polinomio.

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

Un segmento cubico passa il tempo lungo un polinomio cubico. Per un determinato input temporale (t), il valore di output viene assegnato dall'equazione seguente.

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

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, se presente.

Questo segmento di animazione rimane attivo fino all'ora di inizio del segmento successivo nella funzione di animazione. Se la funzione di animazione non contiene più segmenti, questo segmento rimane attivo per un periodo illimitato.

Se tutti i coefficienti tranne constantCoefficient sono zero, il valore di questo segmento rimane costante nel tempo e l'animazione non causa una ricomposizione per la durata del segmento.

Esempio

L'esempio seguente crea una funzione di animazione con due segmenti polinomiali cubici.

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

Requisiti

   
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

Animazione

IDCompositionAnimation