다음을 통해 공유


ID2D1DCRenderTarget 인터페이스(d2d1.h)

GDI 디바이스 컨텍스트에 명령을 그리는 문제를 해결합니다.

상속

ID2D1DCRenderTarget 인터페이스는 ID2D1RenderTarget에서 상속됩니다. ID2D1DCRenderTarget 에는 다음과 같은 유형의 멤버도 있습니다.

메서드

ID2D1DCRenderTarget 인터페이스에는 이러한 메서드가 있습니다.

 
ID2D1DCRenderTarget::BindDC

렌더링 대상을 그리기 명령을 발급하는 디바이스 컨텍스트에 바인딩합니다.

설명

ID2D1DCRenderTarget 개체 만들기

ID2D1DCRenderTarget을 만들려면 ID2D1Factory::CreateDCRenderTarget 메서드를 사용합니다.

DC 렌더링 대상을 사용하여 렌더링하려면 먼저 BindDC 메서드를 사용하여 GDI DC와 연결해야 합니다. 다른 DC 또는 변경 내용에 그릴 영역의 크기를 사용할 때마다 이 작업을 수행합니다.

DC 렌더링 대상이 GDI에서 작동하도록 하려면 해당 픽셀 형식을 DXGI_FORMAT_B8G8R8A8_UNORM , 알파 모드를 D2D1_ALPHA_MODE_PREMULTIPLIED 또는 D2D1_ALPHA_MODE_IGNORE 설정합니다.

애플리케이션은 렌더링 대상을 한 번 만들고 애플리케이션의 수명 동안 또는 렌더링 대상의 EndDraw 메서드가 D2DERR_RECREATE_TARGET 오류를 반환할 때까지 해당 대상을 유지해야 합니다. 이 오류가 발생하면 렌더링 대상(및 만든 리소스)을 다시 만들어야 합니다.

ID2D1DCRenderTargets, GDI 변환 및 Windows의 오른쪽에서 왼쪽 언어 빌드

ID2D1DCRenderTarget을 사용하면 Direct2D 콘텐츠를 내부 비트맵으로 렌더링한 다음, GDI를 사용하여 비트맵을 DC에 렌더링합니다.

GDI는 SetWorldTransform 메서드를 통해 GDI 변환 또는 기타 효과를 렌더링 대상에서 사용하는 동일한 DC에 적용할 수 있습니다. 이 경우 GDI는 Direct2D에서 생성된 비트맵을 변환합니다. GDI 변환을 사용하여 Direct2D 콘텐츠를 변환하면 앤티앨리어싱 및 하위 픽셀 위치 지정이 이미 계산된 비트맵을 변환하므로 출력의 시각적 품질이 저하될 수 있습니다.

예를 들어 렌더링 대상을 사용하여 앤티앨리어싱된 기하 도형과 텍스트가 포함된 장면을 그립니다. GDI 변환을 사용하여 DC에 배율 변환을 적용하고 장면의 크기를 10배 더 크게 조정하면 픽셀화 및 가변 가장자리가 표시됩니다. 그러나 Direct2D를 사용하여 유사한 변환을 적용한 경우 장면의 시각적 품질이 저하되지 않습니다.

경우에 따라 GDI가 Direct2D 콘텐츠의 품질을 저하시킬 수 있는 추가 처리를 수행하고 있다는 것은 분명하지 않을 수 있습니다. 예를 들어 WINDOWS의 RTL(오른쪽에서 왼쪽) 빌드에서 ID2D1DCRenderTarget 으로 렌더링된 콘텐츠는 GDI가 대상에 복사할 때 가로로 반전될 수 있습니다. 콘텐츠가 실제로 반전되는지 여부는 DC의 현재 설정에 따라 달라집니다.

렌더링되는 콘텐츠 유형에 따라 반전을 방지할 수 있습니다. Direct2D 콘텐츠에 ClearType 텍스트가 포함된 경우 이 반전으로 텍스트 품질이 저하됩니다.

SetLayout GDI 함수를 사용하여 RTL 렌더링 동작을 제어할 수 있습니다. 미러링을 방지하려면 다음 예제와 같이 SetLayout GDI 함수를 호출하고 LAYOUT_BITMAPORIENTATIONPRESERVED 두 번째 매개 변수의 유일한 값으로 지정합니다( LAYOUT_RTL 결합하지 않음).

SetLayout(m_hwnd, LAYOUT_BITMAPORIENTATIONPRESERVED);

예제

다음 코드는 DC 렌더링 대상을 만듭니다.

// Create a DC render target.
D2D1_RENDER_TARGET_PROPERTIES props = D2D1::RenderTargetProperties(
    D2D1_RENDER_TARGET_TYPE_DEFAULT,
    D2D1::PixelFormat(
        DXGI_FORMAT_B8G8R8A8_UNORM,
        D2D1_ALPHA_MODE_IGNORE),
    0,
    0,
    D2D1_RENDER_TARGET_USAGE_NONE,
    D2D1_FEATURE_LEVEL_DEFAULT
    );

hr = m_pD2DFactory->CreateDCRenderTarget(&props, &m_pDCRT);

앞의 코드에서 m_pD2DFactoryID2D1Factory에 대한 포인터이고 m_pDCRTID2D1DCRenderTarget에 대한 포인터입니다.

다음 코드 예제에서는 ID2D1DCRenderTarget에 DC를 바인딩합니다.

HRESULT DemoApp::OnRender(const PAINTSTRUCT &ps)
{

// Get the dimensions of the client drawing area.
GetClientRect(m_hwnd, &rc);

// Bind the DC to the DC render target.
hr = m_pDCRT->BindDC(ps.hdc, &rc);

Direct2D에서 GDI를 사용하는 방법에 대한 자세한 내용은 Direct2D 및 GDI 상호 운용 개요를 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 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

추가 정보

Direct2D 및 GDI 상호 운용 개요

ID2D1RenderTarget