ID2D1RenderTarget::P ushLayer (constD2D1_LAYER_PARAMETERS&,ID2D1Layer*) 方法 (d2d1.h)

将指定的层添加到呈现器目标,以便它接收所有后续的绘制操作,直到调用 PopLayer

语法

void PushLayer(
  [ref] const D2D1_LAYER_PARAMETERS & layerParameters,
  [in]  ID2D1Layer                    *layer
);

参数

[ref] layerParameters

类型: const D2D1_LAYER_PARAMETERS

图层的内容边界、几何蒙版、不透明度、不透明蒙版和抗锯齿选项。

[in] layer

类型: ID2D1Layer*

接收后续绘图操作的图层。

注意从 Windows 8 开始,此参数是可选的。 如果未指定层,Direct2D 会自动管理层资源。
 

返回值

备注

PushLayer 方法允许调用方开始将呈现重定向到层。 所有呈现操作在层中都有效。 图层的位置受呈现器目标上设置的世界转换的影响。

每个 PushLayer 都必须具有匹配的 PopLayer 调用。 如果 PopLayer 调用数多于 PushLayer 调用,则呈现目标将置于错误状态。 如果在弹出所有未完成的图层之前调用 Flush ,则呈现目标将置于错误状态,并返回错误。 可以通过调用 EndDraw 清除错误状态。

特定的 ID2D1Layer 资源一次只能处于活动状态。 换句话说,不能调用 PushLayer 方法,然后立即调用具有相同层资源的另一个 PushLayer 方法。 相反,必须使用不同的层资源调用第二个 PushLayer 方法。

如果此方法失败,则不会返回错误代码。 若要确定绘图操作 ((如 PushLayer) )是否失败,检查 ID2D1RenderTarget::EndDrawID2D1RenderTarget::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、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2、Windows Server 2008 SP2 和适用于 Windows Server 2008 的平台更新 [桌面应用 |UWP 应用]
目标平台 Windows
标头 d2d1.h
Library D2d1.lib
DLL D2d1.dll

另请参阅

ID2D1RenderTarget

层概述

PopLayer