ID2D1RenderTarget::P ushLayer(constD2D1_LAYER_PARAMETERS&,ID2D1Layer*)-Methode (d2d1.h)

Fügt dem Renderziel die angegebene Ebene hinzu, damit alle nachfolgenden Zeichnungsvorgänge empfangen werden, bis PopLayer aufgerufen wird.

Syntax

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

Parameter

[ref] layerParameters

Typ: const D2D1_LAYER_PARAMETERS

Die Inhaltsgrenzen, geometrische Maske, Deckkraft, Deckkraftmaske und Antialiasingoptionen für die Ebene.

[in] layer

Typ: ID2D1Layer*

Die Ebene, die nachfolgende Zeichnungsvorgänge empfängt.

Hinweis Ab Windows 8 ist dieser Parameter optional. Wenn keine Ebene angegeben ist, verwaltet Direct2D die Layerressource automatisch.
 

Rückgabewert

Keine

Bemerkungen

Die PushLayer-Methode ermöglicht es einem Aufrufer, mit der Umleitung des Renderings auf eine Ebene zu beginnen. Alle Renderingvorgänge sind in einer Ebene gültig. Die Position der Ebene wird von der Welttransformation beeinflusst, die auf dem Renderziel festgelegt ist.

Jeder PushLayer muss über einen entsprechenden PopLayer-Aufruf verfügen. Wenn mehr PopLayer-Aufrufe als PushLayer-Aufrufe vorhanden sind, wird das Renderziel in einen Fehlerzustand versetzt. Wenn Flush aufgerufen wird, bevor alle ausstehenden Ebenen geknallt werden, wird das Renderziel in einen Fehlerzustand versetzt, und ein Fehler wird zurückgegeben. Der Fehlerzustand kann durch einen Aufruf von EndDraw gelöscht werden.

Eine bestimmte ID2D1Layer-Ressource kann nur gleichzeitig aktiv sein. Anders ausgedrückt: Sie können keine PushLayer-Methode aufrufen und dann sofort mit einer anderen PushLayer-Methode mit derselben Schichtressource folgen. Stattdessen müssen Sie die zweite PushLayer-Methode mit unterschiedlichen Ebenenressourcen aufrufen.

Diese Methode gibt keinen Fehlercode zurück, wenn sie fehlschlägt. Überprüfen Sie das Ergebnis, das von den Methoden ID2D1RenderTarget::EndDraw oder ID2D1RenderTarget::Flush zurückgegeben wird, um festzustellen, ob bei einem Zeichnungsvorgang (z. B. PushLayer) ein Fehler aufgetreten ist.

Beispiele

Im folgenden Beispiel wird eine Ebene verwendet, um eine Bitmap in eine geometrische Maske zu schneiden. Das vollständige Beispiel finden Sie unter How to Clip to a Geometric Mask.For the complete example, see 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;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7, Windows Vista mit SP2 und Plattformupdate für Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2, Windows Server 2008 mit SP2 und Plattformupdate für Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile d2d1.h
Bibliothek D2d1.lib
DLL D2d1.dll

Weitere Informationen

ID2D1RenderTarget

Übersicht über Ebenen

PopLayer