ID2D1Layer 介面 (d2d1.h)
表示呈現圖層所需的備份存放區。
繼承
ID2D1Layer介面繼承自ID2D1Resource。 ID2D1Layer 也有下列類型的成員:
方法
ID2D1Layer介面具有這些方法。
ID2D1Layer::GetSize 取得與裝置無關圖元的圖層大小。 |
備註
若要建立圖層,請呼叫將使用圖層之轉譯目標的 CreateLayer 方法。 若要繪製至圖層,請呼叫 PushLayer 方法,將圖層推送至轉譯目標堆疊。 完成繪製圖層之後,請呼叫 PopLayer 方法。
在 PushLayer和PopLayer呼叫之間,圖層正在使用中,無法由另一個轉譯目標使用。
如果未指定圖層的大小,對應的 PushLayer 呼叫會根據圖層內容界限和幾何遮罩來決定最小圖層大小。 圖層資源可以大於 PushLayer 不需要任何轉譯成品所需的大小。
如果指定圖層的大小,或者已使用圖層,而且在 PushLayer 期間計算所需的備份存放區大小大於圖層,則圖層資源會以單調方式展開在每個軸上,以確保它夠大。 圖層資源永遠不會縮小大小。
建立 ID2D1Layer 物件
若要建立圖層,請呼叫將使用圖層之轉譯目標的 CreateLayer 方法。圖層是裝置相依的資源:您的應用程式應該在初始化要使用的轉譯目標之後建立圖層,並在轉譯目標需要重新建立時重新建立圖層。 (如需資源的詳細資訊,請參閱 資源概觀.)
範例
下列範例使用圖層將繪圖裁剪為幾何遮罩。 如需完整範例,請參閱 How to Clip to a Geometric Mask。
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 Vista 的 Windows 7、Windows Vista SP2 和平臺更新 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 R2、Windows Server 2008 SP2 和 Platform Update for Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | d2d1.h |