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

Aggiunge il livello specificato alla destinazione di rendering in modo che riceva tutte le operazioni di disegno successive fino a quando Non viene chiamato PopLayer .

Sintassi

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

Parametri

[ref] layerParameters

Tipo: const D2D1_LAYER_PARAMETERS

Limiti di contenuto, maschera geometrica, opacità, maschera di opacità e opzioni di antialiasing per il livello.

[in] layer

Tipo: ID2D1Layer*

Livello che riceve le operazioni di disegno successive.

Nota A partire da Windows 8, questo parametro è facoltativo. Se non viene specificato un livello, Direct2D gestisce automaticamente la risorsa livello.
 

Valore restituito

nessuno

Osservazioni

Il metodo PushLayer consente a un chiamante di iniziare a reindirizzare il rendering a un livello. Tutte le operazioni di rendering sono valide in un livello. La posizione del livello è interessata dalla trasformazione globale impostata sulla destinazione di rendering.

Ogni PushLayer deve avere una chiamata PopLayer corrispondente. Se sono presenti più chiamate PopLayer rispetto alle chiamate PushLayer , la destinazione di rendering viene inserita in uno stato di errore. Se Flush viene chiamato prima che vengano visualizzati tutti i livelli in sospeso, la destinazione di rendering viene inserita in uno stato di errore e viene restituito un errore. Lo stato di errore può essere cancellato da una chiamata a EndDraw.

Una particolare risorsa ID2D1Layer può essere attiva solo contemporaneamente. In altre parole, non è possibile chiamare un metodo PushLayer e quindi seguire immediatamente con un altro metodo PushLayer con la stessa risorsa livello. È invece necessario chiamare il secondo metodo PushLayer con risorse di livello diverse.

Questo metodo non restituisce un codice di errore in caso di errore. Per determinare se un'operazione di disegno (ad esempio PushLayer) non è riuscita, controllare il risultato restituito dai metodi ID2D1RenderTarget::EndDraw o ID2D1RenderTarget::Flush .

Esempio

Nell'esempio seguente viene usato un livello per ritagliare una bitmap in una maschera geometrica. Per l'esempio completo, vedere Come ritagliare una maschera geometrica.

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;
}

Requisiti

Requisito Valore
Client minimo supportato Windows 7, Windows Vista con SP2 e Aggiornamento della piattaforma per Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 R2, Windows Server 2008 con SP2 e Platform Update per Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione d2d1.h
Libreria D2d1.lib
DLL D2d1.dll

Vedi anche

ID2D1RenderTarget

Panoramica dei livelli

PopLayer