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


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

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

Синтаксис

HRESULT AddRepeat(
  [in] double beginOffset,
  [in] double durationToRepeat
);

Параметры

[in] beginOffset

Тип: double

Смещение в секундах от начала анимации до точки, с которой должно начаться повторение.

[in] durationToRepeat

Тип: double

Длительность (в секундах) части анимации, непосредственно предшествующей времени начала, заданному параметром beginOffset. Это часть, которая будет повторяться.

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

Тип: HRESULT

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

Комментарии

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

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

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

Примеры

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

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

Требования

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

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

IDCompositionAnimation