Share via


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 方法所傳回的結果。

範例

下列範例使用圖層將點陣圖裁剪為幾何遮罩。 如需完整範例,請參閱 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
程式庫 D2d1.lib
Dll D2d1.dll

另請參閱

ID2D1RenderTarget

層次概觀

PopLayer