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 |
标头 | dcompanimation.h |
Library | Dcomp.lib |
DLL | Dcomp.dll |