ID2D1HwndRenderTarget インターフェイス (d2d1.h)

描画命令をウィンドウにレンダリングします。

継承

ID2D1HwndRenderTarget インターフェイスは、ID2D1RenderTarget から継承されます。 ID2D1HwndRenderTarget には、次の種類のメンバーもあります。

メソッド

ID2D1HwndRenderTarget インターフェイスには、これらのメソッドがあります。

 
ID2D1HwndRenderTarget::CheckWindowState

このレンダー ターゲットに関連付けられている HWND がオクルージョンされているかどうかを示します。
ID2D1HwndRenderTarget::GetHwnd

このレンダー ターゲットに関連付けられている HWND を返します。
ID2D1HwndRenderTarget::Resize

レンダー ターゲットのサイズを指定したピクセル サイズに変更します。 (オーバーロード 2/2)
ID2D1HwndRenderTarget::Resize

レンダー ターゲットのサイズを指定したピクセル サイズに変更します。 (オーバーロード 1/2)

注釈

他のレンダー ターゲットの場合と同様に、描画コマンドを発行する前に BeginDraw を呼び出す必要があります。 描画が完了したら、 EndDraw を呼び出して描画が完了したことを示し、レンダー ターゲットをバッキングするバッファーへのアクセスを解放します。

ID2D1HwndRenderTarget の場合、BeginDraw の唯一の副作用は、描画コマンドを発行できるようにレンダー ターゲットの状態を変更することです。

EndDraw は 、バッチ描画コマンドをフラッシュします。 エラーが発生していない場合は、バッファーも表示され、関連付けられたウィンドウに表示されます。 最後に、 EndDraw は、図面またはプレゼンテーションで発生した最初のエラーの HRESULT と、エラーが発生した時点のタグの状態を返します。

ID2D1HwndRenderTarget オブジェクトは二重バッファー処理されるため、発行された描画コマンドはすぐには表示されず、オフスクリーン サーフェスで実行されます。 EndDraw が呼び出されると、レンダリング エラーがない場合は、オフスクリーン バッファーが表示されます。 EndDraw によってフラッシュされたバッチにレンダリング エラーが発生した場合、バッファーは表示されず、アプリケーションは BeginDraw を呼び出してフレームを再描画する必要があります。 アプリケーションがエラーに関係なくフレームを表示する場合は、EndDraw を呼び出す前にエラーをチェックするために Flush を使用できます。

ハードウェア レンダー ターゲットのバック バッファーは、 GetPixelSize で指定されたサイズです。 EndDraw がバッファーを表示する場合、このビットマップは、表示されるサーフェス (ウィンドウのクライアント領域全体) をカバーするように引き伸ばされます。 このストレッチは、レンダー ターゲットがハードウェアでレンダリングされている場合はバイリニア フィルタリングを使用し、レンダリング ターゲットがソフトウェアを使用している場合はニアレスト ネイバー フィルタリングを使用して実行されます。 (通常、アプリケーションは Resize を呼び出して、レンダー ターゲットのピクセル サイズとターゲットのピクセル サイズが一致することを確認します。これは要件ではありませんが、スケーリングは必要ありません)。

ウィンドウがアダプターをまたぐ場合、Direct2D は、コンテンツを表示する必要があるアダプターにレンダリングが行われているアダプターから、画面外のレンダー ターゲットの部分が確実にコピーされるようにします。

レンダー ターゲットがオンになっているアダプターが削除されたか、アプリケーションの実行中にドライバーがアップグレードされた場合、これは EndDraw 呼び出しでエラーとして返されます。 この場合、アプリケーションは必要に応じて新しいレンダー ターゲットとリソースを作成する必要があります。

ID2D1HwndRenderTarget オブジェクトの作成

ID2D1HwndRenderTarget を作成するには、ID2D1Factory::CreateHwndRenderTarget メソッドを使用します。

アプリケーションでレンダー ターゲットを 1 回作成し、アプリケーションの有効期間中、またはレンダー ターゲットの EndDraw メソッドが D2DERR_RECREATE_TARGET エラーを返すまで保持する必要があります。 このエラーが発生した場合は、レンダー ターゲット (および作成したリソース) を再作成する必要があります。

次の例では、 CreateHwndRenderTarget メソッドを使用して ID2D1HwndRenderTarget を作成します

RECT rc;
GetClientRect(m_hwnd, &rc);

D2D1_SIZE_U size = D2D1::SizeU(
    rc.right - rc.left,
    rc.bottom - rc.top
    );

// Create a Direct2D render target.
hr = m_pD2DFactory->CreateHwndRenderTarget(
    D2D1::RenderTargetProperties(),
    D2D1::HwndRenderTargetProperties(m_hwnd, size),
    &m_pRenderTarget
    );

次の例では、 ID2D1HwndRenderTarget を 使用してウィンドウにテキストを描画します。

//  Called whenever the application needs to display the client
//  window. This method writes "Hello, World"
//
//  Note that this function will automatically discard device-specific
//  resources if the Direct3D device disappears during function
//  invocation, and will recreate the resources the next time it's
//  invoked.
//
HRESULT DemoApp::OnRender()
{
    HRESULT hr;

    hr = CreateDeviceResources();

    if (SUCCEEDED(hr))
    {
        static const WCHAR sc_helloWorld[] = L"Hello, World!";

        // Retrieve the size of the render target.
        D2D1_SIZE_F renderTargetSize = m_pRenderTarget->GetSize();

        m_pRenderTarget->BeginDraw();

        m_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());

        m_pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));

        m_pRenderTarget->DrawText(
            sc_helloWorld,
            ARRAYSIZE(sc_helloWorld) - 1,
            m_pTextFormat,
            D2D1::RectF(0, 0, renderTargetSize.width, renderTargetSize.height),
            m_pBlackBrush
            );

        hr = m_pRenderTarget->EndDraw();

        if (hr == D2DERR_RECREATE_TARGET)
        {
            hr = S_OK;
            DiscardDeviceResources();
        }
    }

    return hr;
}

この例では、コードは省略されています。

要件

要件
サポートされている最小のクライアント Windows 7、Windows Vista SP2 および Windows Vista 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 R2、Windows Server 2008 SP2 および Windows Server 2008 用プラットフォーム更新プログラム [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー d2d1.h

こちらもご覧ください

ID2D1RenderTarget