ID2D1Layer インターフェイス

レイヤーのレンダリングに必要なバッキング ストアを表します。

実装するタイミング

カスタム実装はサポートされません。

メンバー

ID2D1Layer インターフェイス の継承元は次のとおりです: ID2D1Resource. ID2D1Layer は次のメンバーも定義します:

  • メソッド

メソッド

ID2D1Layer インターフェイス は次の項目を定義します: メソッド.

メソッド 説明
GetSize

レイヤーのサイズをデバイス非依存のピクセル単位で取得します。

 

解説

レイヤーを作成するには、レイヤーが使用されるレンダー ターゲットの CreateLayer メソッドを呼び出します。レイヤーに描画するには、PushLayer メソッドを呼び出して、レイヤーをレンダー ターゲット スタックにプッシュします。レイヤーへの描画が完了したら、PopLayer メソッドを呼び出します。

PushLayer を呼び出してから PopLayer を呼び出すまでの間、レイヤーは使用中のため、別のレンダー ターゲットで使用することはできません。

レイヤーのサイズが指定されていない場合、対応する PushLayer を呼び出すことで、レイヤーのコンテンツの境界とジオメトリ マスクに基づいてレイヤーの最小サイズが決まります。レイヤー リソースは、レンダリング アーティファクトがない場合、PushLayer で必要なサイズよりも大きくなる可能性があります。

レイヤーのサイズが指定されている場合、またはレイヤーが既に使用されていて、PushLayer の実行中に計算された必要なバッキング ストアのサイズがレイヤーより大きい場合、レイヤー リソースは、十分な大きさになるように各軸で単調に拡大されます。レイヤー リソースのサイズが縮小されることはありません。

ID2D1Layer オブジェクトの作成

レイヤーを作成するには、レイヤーが使用されるレンダー ターゲットの CreateLayer メソッドを呼び出します。

レイヤーはデバイス依存のリソースです。アプリケーションでは、レイヤーが使用されるレンダー ターゲットを初期化した後にレイヤーを作成し、レンダー ターゲットの再作成が必要になるたびにレイヤーも再作成する必要があります (リソースの詳細については、「リソースの概要」を参照してください)。

次の例では、レイヤーを使用して、描画をジオメトリ マスクにクリップします。完全な例については、「ジオメトリ マスクにクリップする方法」を参照してください。

  HRESULT DemoApp::RenderWithLayer(ID2D1RenderTarget *pRT)
{
    HRESULT hr = S_OK;

    // Create a layer.
    ID2D1Layer *pLayer = NULL;
    hr = pRT->CreateLayer(NULL, &pLayer);

    if (SUCCEEDED(hr))
    {
        pRT->SetTransform(D2D1::Matrix3x2F::Translation(350, 50));

        // Push the layer with the geometric mask.
        pRT->PushLayer(
            D2D1::LayerParameters(D2D1::InfiniteRect(), m_pPathGeometry),
            pLayer
            );
            
  
        pRT->DrawBitmap(m_pOrigBitmap, D2D1::RectF(0, 0, 200, 133));
        pRT->FillRectangle(D2D1::RectF(0.f, 0.f, 25.f, 25.f), m_pSolidColorBrush);  
        pRT->FillRectangle(D2D1::RectF(25.f, 25.f, 50.f, 50.f), m_pSolidColorBrush);
        pRT->FillRectangle(D2D1::RectF(50.f, 50.f, 75.f, 75.f), m_pSolidColorBrush); 
        pRT->FillRectangle(D2D1::RectF(75.f, 75.f, 100.f, 100.f), m_pSolidColorBrush);    
        pRT->FillRectangle(D2D1::RectF(100.f, 100.f, 125.f, 125.f), m_pSolidColorBrush); 
        pRT->FillRectangle(D2D1::RectF(125.f, 125.f, 150.f, 150.f), m_pSolidColorBrush);    
        

        pRT->PopLayer();
    }

    SafeRelease(&pLayer);

    return hr;
}

要件

クライアントの最小要件

Windows 7, Windows Vista SP2 および Windows Vista 用のプラットフォーム更新プログラム

サーバーの最小要件

Windows Server 2008 R2, Windows Server 2008 SP2 および Windows Server 2008 用のプラットフォーム更新プログラム

ヘッダー

D2d1.h

ライブラリ

D2d1.lib

DLL

D2d1.dll

参照

レイヤーの概要

レイヤーを使用してクリップする例

ID2D1RenderTarget