Share via


ID2D1Factory::CreateTransformedGeometry(ID2D1Geometry*,constD2D1_MATRIX_3X2_F*,ID2D1TransformedGeometry**) 메서드(d2d1.h)

지정된 기하 도형을 변환하고 결과를 ID2D1TransformedGeometry 개체로 저장합니다.

구문

HRESULT CreateTransformedGeometry(
  ID2D1Geometry            *sourceGeometry,
  const D2D1_MATRIX_3X2_F  *transform,
  ID2D1TransformedGeometry **transformedGeometry
);

매개 변수

sourceGeometry

형식: [in] ID2D1Geometry*

변환할 기하 도형입니다.

transform

형식: [in] const D2D1_MATRIX_3X2_F*

적용할 변환입니다.

transformedGeometry

형식: [out] ID2D1TransformedGeometry**

이 메서드가 반환될 때 는 변환된 새 geometry 개체에 대한 포인터의 주소를 포함합니다. 변환된 기하 도형은 변환을 통해sourceGeometry를 변환한 결과를 저장합니다.

반환 값

형식: HRESULT

메서드가 성공하면 S_OK를 반환하고, 그렇지 않으면 HRESULT 오류 코드를 반환합니다.

설명

다른 리소스와 마찬가지로 변환된 기하 도형은 생성된 팩터리의 리소스 공간 및 스레딩 정책을 상속합니다. 이 개체는 변경할 수 없습니다.

DrawGeometry 메서드를 사용하여 변형된 기하 도형을 쓰다듬을 때 스트로크 너비는 기하 도형에 적용된 변환의 영향을 받지 않습니다. 스트로크 너비는 월드 변환의 영향을 받습니다.

예제

다음 예제에서는 ID2D1RectangleGeometry를 만든 다음 변환하지 않고 그립니다. 다음 그림에 표시된 출력을 생성합니다.

사각형 그림
hr = m_pD2DFactory->CreateRectangleGeometry(
    D2D1::RectF(150.f, 150.f, 200.f, 200.f),
    &m_pRectangleGeometry
    );

다음 예제에서는 렌더링 대상을 사용하여 기하 도형의 크기를 3으로 조정한 다음 그립니다. 다음 그림에서는 변환 없이 및 변환을 사용하여 사각형을 그리는 결과를 보여 줍니다. 스트로크 두께가 1이더라도 변환 후 스트로크가 더 두껍다는 것을 알 수 있습니다.

더 두꺼운 스트로크가 있는 더 큰 사각형 내부의 작은 사각형 그림
// Transform the render target, then draw the rectangle geometry again.
m_pRenderTarget->SetTransform(
    D2D1::Matrix3x2F::Scale(
        D2D1::SizeF(3.f, 3.f),
        D2D1::Point2F(175.f, 175.f))
    );

m_pRenderTarget->DrawGeometry(m_pRectangleGeometry, m_pBlackBrush, 1);

다음 예제에서는 CreateTransformedGeometry 메서드를 사용하여 기하 도형의 크기를 3으로 조정한 다음 그립니다. 다음 그림에 표시된 출력을 생성합니다. 사각형이 더 크지만 스트로크는 증가하지 않았습니다.

동일한 스트로크가 있는 더 큰 사각형 내의 작은 사각형 그림
 // Create a geometry that is a scaled version
 // of m_pRectangleGeometry.
 // The new geometry is scaled by a factory of 3
 // from the center of the geometry, (35, 35).

 hr = m_pD2DFactory->CreateTransformedGeometry(
     m_pRectangleGeometry,
     D2D1::Matrix3x2F::Scale(
         D2D1::SizeF(3.f, 3.f),
         D2D1::Point2F(175.f, 175.f)),
     &m_pTransformedGeometry
     );
// Replace the previous render target transform.
m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());

// Draw the transformed geometry.
m_pRenderTarget->DrawGeometry(m_pTransformedGeometry, m_pBlackBrush, 1);

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 d2d1.h
라이브러리 D2d1.lib
DLL D2d1.dll

추가 정보

ID2D1Factory

ID2D1TransformedGeometry