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 |
라이브러리 | Dcomp.lib |
DLL | Dcomp.dll |