ID2D1Layer 接口 (d2d1.h)
表示呈现层所需的后备存储。
继承
ID2D1Layer 接口继承自 ID2D1Resource。 ID2D1Layer 还具有以下类型的成员:
方法
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、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2008 R2、Windows Server 2008 SP2 和适用于 Windows Server 2008 的平台更新 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | d2d1.h |