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.
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 |