Метод 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 |