ID2D1DeviceContext::SetTarget 메서드(d2d1_1.h)

이제 Direct2D 디바이스 컨텍스트가 렌더링될 비트맵 또는 명령 목록입니다.

구문

void SetTarget(
  [in, optional] ID2D1Image *image
);

매개 변수

[in, optional] image

형식: ID2D1Image*

Direct2D 디바이스 컨텍스트가 렌더링할 표면 또는 명령 목록입니다.

반환 값

없음

설명

컨텍스트가 그리는 동안을 포함하여 대상은 언제든지 변경할 수 있습니다.

대상은 D2D1_BITMAP_OPTIONS_TARGET 플래그를 사용하여 만든 비트맵이거나 명령 목록일 수 있습니다. 다른 종류의 이미지는 대상으로 설정할 수 없습니다. 예를 들어 효과의 출력을 대상으로 설정할 수 없습니다. 대상이 유효하지 않으면 컨텍스트가 D2DERR_INVALID_TARGET 오류 상태로 들어갑니다.

SetTarget을 사용하여 여러 디바이스 컨텍스트에서 비트맵/명령 목록으로 동시에 렌더링할 수 없습니다. 이미지가 BeginDraw EndDraw/ 시간 범위 내의 디바이스 컨텍스트에서 설정된 경우 "렌더링 중"으로 간주됩니다. 여러 디바이스 컨텍스트를 통해 이미지에 렌더링하려고 하면 첫 번째 이후의 모든 후속 디바이스 컨텍스트가 오류 상태가 됩니다.

두 번째 디바이스 컨텍스트에 이미지를 연결하려는 호출자는 먼저 첫 번째 디바이스 컨텍스트에서 EndDraw 를 호출해야 합니다.

다음은 올바른 호출 순서의 예입니다.

pDC1->BeginDraw();
pDC1->SetTarget(pImage);
// …
pDC1->EndDraw();

pDC2->BeginDraw();
pDC2->SetTarget(pImage);
// …
pDC2->EndDraw();

다음은 잘못된 호출 순서의 예입니다.

pDC1->BeginDraw();
pDC2->BeginDraw();

pDC1->SetTarget(pImage);

// ...

pDC1->SetTarget(NULL);

pDC2->SetTarget(pImage); // This call is invalid, even though pImage is no longer set on pDC1.

// ...

pDC1->EndDraw(); // This EndDraw SUCCEEDs.
pDC2->EndDraw(); // This EndDraw FAILs


참고 대상을 변경해도 HWND 렌더링 대상이 제공하는 비트맵은 변경되지 않으며 DC 렌더링 대상 Blt의 비트맵도 변경되지 않습니다.
 
이 API를 사용하면 애플리케이션이 비트맵을 원본(예: DrawBitmap)으로, 동시에 대상으로 쉽게 사용할 수 있습니다. 비트맵을 대상으로 바인딩된 동일한 디바이스 컨텍스트에서 소스로 사용하려고 하면 디바이스 컨텍스트가 D2DERR_BITMAP_BOUND_AS_TARGET 오류 상태로 전환됩니다.

여러 렌더링 대상에서 비트맵을 대상 비트맵으로 한 번에 바인딩할 수 있습니다. 이렇게 하는 애플리케이션은 렌더링을 Flush 또는 EndDraw와 제대로 동기화해야 합니다.

컨텍스트가 그리는 동안을 포함하여 언제든지 대상을 변경할 수 있습니다.

대상을 NULL로 설정할 수 있습니다. 이 경우 그리기 호출은 디바이스 컨텍스트를 D2DERR_WRONG_STATE 오류 상태로 전환합니다. NULL 대상을 사용하여 SetTarget 을 호출해도 원래 대상 비트맵은 디바이스 컨텍스트로 복원되지 않습니다.

디바이스 컨텍스트에 미해결 HDC가 있는 경우 컨텍스트는 D2DERR_WRONG_STATE 오류 상태가 됩니다. 대상은 변경되지 않습니다.

비트맵과 디바이스 컨텍스트가 동일한 리소스 도메인에 없는 경우 컨텍스트는 오류 상태가 됩니다 \ . 대상은 변경되지 않습니다.

ID2D1RenderTarget::GetPixelSize 는 비트맵 바인딩이 없는 경우 현재 대상 비트맵의 크기(또는 0, 0)를 반환합니다. ID2D1RenderTarget::GetSize 는 렌더링 대상의 DPI에 의해 크기가 조정된 현재 비트맵의 픽셀 크기를 반환합니다. SetTarget 은 렌더링 대상의 DPI에 영향을 주지 않습니다.

ID2D1RenderTarget::GetPixelFormat 은 현재 대상 비트맵의 픽셀 형식을 반환합니다(또는 없는 경우 D2D1_ALPHA_MODE_UNKNOWN DXGI_FORMAT_UNKNOWN ).

ID2D1Bitmap::CopyFromRenderTarget 은 현재 바인딩된 대상 비트맵에서 복사합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 R2용 Windows Server 2012 및 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 d2d1_1.h
DLL D2d1.dll

추가 정보

ID2D1Bitmap1

ID2D1DeviceContext

ID2D1DeviceContext::CreateBitmap

ID2D1DeviceContext::GetTarget