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 タイムスパン内のデバイス コンテキストで設定されている場合、イメージは "レンダリング対象" と見なされます。 複数のデバイス コンテキストを使用してイメージにレンダリングしようとすると、最初の後のすべての後続のデバイス コンテキストがエラー状態になります。

2 番目のデバイス コンテキストにイメージをアタッチする呼び出し元は、最初のデバイス コンテキストで 最初に 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 レンダー ターゲットが blts 間で表示されるビットマップも変更されません。
 
この 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