다음을 통해 공유


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 7, Windows Vista SP2 및 Windows Vista용 플랫폼 업데이트가 포함된 Windows Vista [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 R2, Windows Server 2008 SP2 및 Windows Server 2008용 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 d2d1.h
라이브러리 D2d1.lib
DLL D2d1.dll

추가 정보

ID2D1Factory

ID2D1TransformedGeometry