다음을 통해 공유


애니메이션 변수 만들기

애플리케이션은 Windows 애니메이션을 사용하여 애니메이션할 각 시각적 특성에 대한 애니메이션 변수를 만들어야 합니다.

개요

애니메이션 변수는 애니메이션 관리자를 사용하여 만들어지고 애플리케이션은 필요한 한 각각에 대한 참조를 유지해야 합니다. 애플리케이션은 일반적으로 애니메이션 효과를 주는 시각적 개체와 동시에 각 애니메이션 변수를 만듭니다.

애니메이션 변수를 만들 때 초기 값을 지정해야 합니다. 그 후에는 애니메이션 효과를 주는 스토리보드를 예약해야만 해당 값을 변경할 수 있습니다.

애니메이션 변수는 스토리보드가 생성될 때 매개 변수로 전달되므로 일반적으로 연결된 시각적 개체가 제거될 때 애니메이션 효과를 줄 필요가 없는 시각적 특성이 더 이상 적용되지 않을 때까지 애플리케이션에서 이를 해제하지 않아야 합니다.

코드 예

애니메이션 색

다음 예제 코드는 Windows 애니메이션 샘플 애플리케이션 기반 애니메이션타이머 기반 애니메이션의 MainWindow.cpp에서 가져옵니다. 이 예제에서는 CreateAnimationVariable 을 사용하여 배경색을 나타내는 세 개의 애니메이션 변수를 만듭니다. 또한 이 코드는 SetLowerBoundSetUpperBound 메서드를 사용하여 애니메이션 변수의 값을 제어합니다.

const DOUBLE INITIAL_RED = COLOR_MAX;
const DOUBLE INITIAL_GREEN = COLOR_MAX;
const DOUBLE INITIAL_BLUE = COLOR_MAX;

HRESULT hr = m_pAnimationManager->CreateAnimationVariable(
    INITIAL_RED,
    &m_pAnimationVariableRed
    );
if (SUCCEEDED(hr))
{
    hr = m_pAnimationVariableRed->SetLowerBound(COLOR_MIN);
    if (SUCCEEDED(hr))
    {
        hr = m_pAnimationVariableRed->SetUpperBound(COLOR_MAX);
        if (SUCCEEDED(hr))
        {
            hr = m_pAnimationManager->CreateAnimationVariable(
                INITIAL_GREEN,
                &m_pAnimationVariableGreen
                );
            if (SUCCEEDED(hr))
            {
                hr = m_pAnimationVariableGreen->SetLowerBound(COLOR_MIN);
                if (SUCCEEDED(hr))
                {
                    hr = m_pAnimationVariableGreen->SetUpperBound(COLOR_MAX);
                    if (SUCCEEDED(hr))
                    {
                        hr = m_pAnimationManager->CreateAnimationVariable(
                            INITIAL_BLUE,
                            &m_pAnimationVariableBlue
                            );
                        if (SUCCEEDED(hr))
                        {
                            hr = m_pAnimationVariableBlue->SetLowerBound(COLOR_MIN);
                            if (SUCCEEDED(hr))
                            {
                                hr = m_pAnimationVariableBlue->SetUpperBound(COLOR_MAX);
                            }
                        }
                    }
                }
            }
        }
    }
}

MainWindow.h의 다음 정의를 확인합니다.

class CMainWindow
{

    ...

private:

    // Animated Variables

    IUIAnimationVariable *m_pAnimationVariableRed;
    IUIAnimationVariable *m_pAnimationVariableGreen;
    IUIAnimationVariable *m_pAnimationVariableBlue;

    ...

};

x 및 y 좌표 애니메이션

다음 예제 코드는 Windows 애니메이션 그리드 레이아웃 샘플의 Thumbnail.cpp에서 가져옵니다. CMainWindow::CreateAnimationVariables 메서드를 참조하세요. 각 개체의 X 및 Y 좌표를 나타내기 위해 두 개의 애니메이션 변수가 만들어집니다.

// Create the animation variables for the x and y coordinates

hr = m_pAnimationManager->CreateAnimationVariable(
    xInitial,
    &m_pAnimationVariableX
    );

if (SUCCEEDED(hr))
{
    hr = m_pAnimationManager->CreateAnimationVariable(
        yInitial,
        &m_pAnimationVariableY
        );

    ...

}

Thumbnail.h의 다음 정의를 확인합니다.

class CThumbnail
{
public:

    ...

    // X and Y Animation Variables

    IUIAnimationVariable *m_pAnimationVariableX;
    IUIAnimationVariable *m_pAnimationVariableY;

    ...

};

애니메이션 변수는 부동 소수점 숫자이지만 해당 값도 정수로 가져올 수 있습니다. 기본적으로 각 값은 가장 가까운 정수로 반올림되지만 변수에 사용되는 반올림 모드를 재정의할 수 있습니다. 다음 예제 코드는 SetRoundingMode 메서드를 사용하여 값을 항상 반올림하도록 지정합니다.

hr = m_pAnimationVariableX->SetRoundingMode(
    UI_ANIMATION_ROUNDING_MODE_FLOOR
    );
if (SUCCEEDED(hr))
{
    hr = m_pAnimationVariableY->SetRoundingMode(
        UI_ANIMATION_ROUNDING_MODE_FLOOR
        );

    ...

}

이전 단계

이 단계를 시작하기 전에 기본 애니메이션 개체 만들기 단계를 완료해야 합니다.

다음 단계

이 단계를 완료한 후 다음 단계는 애니메이션 관리자 업데이트 및 프레임 그리기입니다.

IUIAnimationManager::CreateAnimationVariable

IUIAnimationVariable::SetLowerBound

IUIAnimationVariable::SetRoundingMode

IUIAnimationVariable::SetUpperBound

Windows 애니메이션 개요