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

另请参阅

IDCompositionAnimation