Поделиться через


Метод IDCompositionAnimation::AddCubic (dcompanimation.h)

Добавляет кубический полиномический сегмент в функцию анимации.

Синтаксис

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

Параметры

[in] beginOffset

Тип: double

Смещение (в секундах) от начала функции анимации до точки, когда этот сегмент должен ввести в действие.

[in] constantCoefficient

Тип: float

Коэффициент константы полинома.

[in] linearCoefficient

Тип: float

Линейный коэффициент полинома.

[in] quadraticCoefficient

Тип: float

Квадратный коэффициент полинома.

[in] cubicCoefficient

Тип: float

Кубический коэффициент полинома.

Возвращаемое значение

Тип: HRESULT

Если функция выполняется успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT . Список кодов ошибок см. в разделе Коды ошибок DirectComposition .

Комментарии

Кубический сегмент перемещает время вдоль кубической полиномиала. Для заданных входных данных времени (t) выходное значение задается с помощью следующей формулы.

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

Этот метод завершается ошибкой, если какой-либо из параметров имеет значение NaN, положительная бесконечность или отрицательная бесконечность.

Так как сегменты анимации должны добавляться в порядке увеличения, этот метод завершается ошибкой, если параметр beginOffset меньше или равен параметру beginOffset предыдущего сегмента, если он имеется.

Этот сегмент анимации остается в силе до момента начала следующего сегмента в функции анимации. Если функция анимации не содержит больше сегментов, этот сегмент остается в силе на неопределенный срок.

Если все коэффициенты, кроме constantCoefficient , равны нулю, значение этого сегмента остается постоянным с течением времени, а анимация не вызывает рекомпозиции в течение всего сегмента.

Примеры

В следующем примере создается функция анимации с двумя кубическими полиномиальными сегментами.

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

Требования

   
Минимальная версия клиента Windows 8 [только классические приложения]
Минимальная версия сервера Windows Server 2012 [только классические приложения]
Целевая платформа Windows
Header dcompanimation.h
Библиотека Dcomp.lib
DLL Dcomp.dll

См. также раздел

Анимация

IDCompositionAnimation