ID2D1RenderTarget::PushLayer メソッド
PopLayer が呼び出されるまでレンダー ターゲットで後続の描画操作をすべて受け取ることができるように、指定されたレイヤーをそのレンダー ターゲットに追加します。
構文
void PushLayer(
[ref] const D2D1_LAYER_PARAMETERS &layerParameters,
[in] ID2D1Layer *layer
);
パラメーター
- layerParameters
D2D1_LAYER_PARAMETERS レイヤーのコンテンツの境界、ジオメトリ マスク、不透明度、不透明度マスク、およびアンチエイリアシング オプション。 - layer [in]
ID2D1Layer 後続の描画操作を受け取るレイヤー。
戻り値
This は値を返しません。
解説
PushLayer メソッドにより、呼び出し元はレイヤーへのレンダリングのリダイレクトを開始できます。レイヤーでは、すべてのレンダリング操作が有効です。レイヤーの場所は、レンダー ターゲットに設定されたワールド変換の影響を受けます。
各 PushLayer には、対応する PopLayer の呼び出しが必要です。PushLayer の呼び出しよりも PopLayer の呼び出しが多い場合、レンダー ターゲットはエラー状態になります。未処理のレイヤーがすべてポップされる前に Flush が呼び出されると、レンダー ターゲットはエラー状態になり、エラーを返します。エラー状態は、EndDraw の呼び出しによってクリアできます。
一度にアクティブにすることができるのは、特定の ID2D1Layer リソースだけです。つまり、PushLayer メソッドを呼び出した直後に、同じレイヤー リソースで別の PushLayer メソッドを続けることはできません。代わりに、別のレイヤー リソースで 2 つ目の PushLayer メソッドを呼び出す必要があります。
このメソッドは失敗した場合でも、エラー コードが返されません。描画操作 (PushLayer など) が失敗したかどうかを判断するには、ID2D1RenderTarget::EndDraw メソッドまたは ID2D1RenderTarget::Flush メソッドによって返された結果を確認します。
例
次の例では、レイヤーを使用して、ビットマップをジオメトリ マスクにクリップします。完全な例については、「ジオメトリ マスクにクリップする方法」を参照してください。
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 |