Compartir a través de


Método ID2D1RenderTarget::P ushLayer(constD2D1_LAYER_PARAMETERS&,ID2D1Layer*) (d2d1.h)

Agrega la capa especificada al destino de representación para que reciba todas las operaciones de dibujo posteriores hasta que se llame a PopLayer .

Sintaxis

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

Parámetros

[ref] layerParameters

Tipo: const D2D1_LAYER_PARAMETERS

Los límites de contenido, máscara geométrica, opacidad, máscara de opacidad y opciones de suavizado de contorno para la capa.

[in] layer

Tipo: ID2D1Layer*

La capa que recibe operaciones de dibujo posteriores.

Nota A partir de Windows 8, este parámetro es opcional. Si no se especifica una capa, Direct2D administra automáticamente el recurso de capa.
 

Valor devuelto

None

Observaciones

El método PushLayer permite que un autor de la llamada comience a redirigir la representación a una capa. Todas las operaciones de representación son válidas en una capa. La ubicación de la capa se ve afectada por la transformación mundial establecida en el destino de representación.

Cada PushLayer debe tener una llamada PopLayer coincidente. Si hay más llamadas PopLayer que las llamadas de PushLayer , el destino de representación se coloca en un estado de error. Si se llama a Flush antes de que aparezcan todas las capas pendientes, el destino de representación se coloca en un estado de error y se devuelve un error. El estado de error se puede borrar mediante una llamada a EndDraw.

Un recurso ID2D1Layer determinado solo puede estar activo al mismo tiempo. En otras palabras, no puede llamar a un método PushLayer y, a continuación, seguir inmediatamente con otro método PushLayer con el mismo recurso de capa. En su lugar, debe llamar al segundo método PushLayer con recursos de capa diferentes.

Este método no devuelve un código de error si se produce un error. Para determinar si se produjo un error en una operación de dibujo (como PushLayer), compruebe el resultado devuelto por los métodos ID2D1RenderTarget::EndDraw o ID2D1RenderTarget::Flush .

Ejemplos

En el ejemplo siguiente se usa una capa para recortar un mapa de bits en una máscara geométrica. Para obtener el ejemplo completo, vea Cómo recortar a una máscara geométrica.

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

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7, Windows Vista con SP2 y Platform Update para Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 R2, Windows Server 2008 con SP2 y Actualización de plataforma para Windows Server 2008 [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado d2d1.h
Library D2d1.lib
Archivo DLL D2d1.dll

Consulte también

ID2D1RenderTarget

Información general sobre capas

PopLayer