다음을 통해 공유


개체에 여러 변환을 적용하는 방법

개체에서 여러 변환을 수행하려면 여러 변환을 하나로 결합하는 것을 의미합니다. 즉, 각 변환 행렬의 출력을 가져와서 다음의 입력으로 사용하여 모든 행렬 변환의 누적 효과를 가져옵니다.

회전과 변환의 두 변환 매트릭스가 함께 곱한다고 가정해 보겠습니다. 결과는 회전과 변환의 함수를 모두 수행하는 새 행렬입니다. 행렬 곱셈은 커밋되지 않으므로 변환 변환을 곱한 회전 변환은 회전 변환을 곱한 변환 변환과 다릅니다.

다음 코드 예제에서는 회전을 적용한 다음, 변환과 회전을 적용하는 방법을 보여 줍니다. 렌더링 결과가 다릅니다.

D2D1_RECT_F rectangle = D2D1::RectF(300.0f, 40.0f, 360.0f, 100.0f);

// Draw the rectangle before transforming the render target.

m_pRenderTarget->DrawRectangle(
    rectangle,
    m_pOriginalShapeBrush,
    1.0f,
    m_pStrokeStyleDash
    );

D2D1_MATRIX_3X2_F rotation = D2D1::Matrix3x2F::Rotation(
    45.0f,
    D2D1::Point2F(330.0f, 70.0f)
    );


D2D1_MATRIX_3X2_F translation = D2D1::Matrix3x2F::Translation(20.0f, 10.0f);

// First rotate about the center of the square and then move
// 20 pixels to the right along the x-axis
// and 10 pixels downward along the y-axis.
m_pRenderTarget->SetTransform(rotation* translation);

// Draw the rectangle in the transformed space.
m_pRenderTarget->FillRectangle(rectangle, m_pFillBrush);
m_pRenderTarget->DrawRectangle(rectangle, m_pTransformedShapeBrush, 1.0f);
D2D1_RECT_F rectangle = D2D1::Rect(40.0f, 40.0f, 100.0f, 100.0f);

// Draw a rectangle without transforming it.
m_pRenderTarget->DrawRectangle(
    rectangle,
    m_pOriginalShapeBrush,
    1.0f,
    m_pStrokeStyleDash
    );

D2D1_MATRIX_3X2_F translation = D2D1::Matrix3x2F::Translation(20.0f, 10.0f);

m_pRenderTarget->SetTransform(translation);

D2D1_MATRIX_3X2_F rotation = D2D1::Matrix3x2F::Rotation(
    45.0f,
    D2D1::Point2F(70.0f, 70.0f)
    );

// First move 20 pixels to the right along the x-axis and
// 10 pixels downward along the y-axis,
// and then rotate about the center of the original square.
m_pRenderTarget->SetTransform(translation * rotation);

// Draw the rectangle in the transformed space.
m_pRenderTarget->FillRectangle(rectangle, m_pFillBrush);
m_pRenderTarget->DrawRectangle(rectangle, m_pTransformedShapeBrush);

코드는 다음 그림에 표시된 출력을 생성합니다.

변환된 후 회전된 사각형 1개와 회전한 후 번역된 사각형 1개 그림

Direct2D 참조

Direct2D 변환 개요