Método ID2D1RenderTarget::P ushLayer(constD2D1_LAYER_PARAMETERS&,ID2D1Layer*) (d2d1.h)
Adiciona a camada especificada ao destino de renderização para que ela receba todas as operações de desenho subsequentes até que o PopLayer seja chamado.
Sintaxe
void PushLayer(
[ref] const D2D1_LAYER_PARAMETERS & layerParameters,
[in] ID2D1Layer *layer
);
Parâmetros
[ref] layerParameters
Tipo: const D2D1_LAYER_PARAMETERS
Os limites de conteúdo, a máscara geométrica, a opacidade, a máscara de opacidade e as opções de suavização da camada.
[in] layer
Tipo: ID2D1Layer*
A camada que recebe as operações de desenho subsequentes.
Retornar valor
Nenhum
Comentários
O método PushLayer permite que um chamador comece a redirecionar a renderização para uma camada. Todas as operações de renderização são válidas em uma camada. O local da camada é afetado pelo conjunto de transformações do mundo no destino de renderização.
Cada PushLayer deve ter uma chamada PopLayer correspondente. Se houver mais chamadas poplayer do que chamadas do PushLayer , o destino de renderização será colocado em um estado de erro. Se Flush for chamado antes que todas as camadas pendentes sejam exibidas, o destino de renderização será colocado em um estado de erro e um erro será retornado. O estado de erro pode ser limpo por uma chamada para EndDraw.
Um recurso ID2D1Layer específico pode estar ativo apenas uma vez. Em outras palavras, você não pode chamar um método PushLayer e, em seguida, seguir imediatamente com outro método PushLayer com o mesmo recurso de camada. Em vez disso, você deve chamar o segundo método PushLayer com recursos de camada diferentes.
Esse método não retornará um código de erro se falhar. Para determinar se uma operação de desenho (como PushLayer) falhou, marcar o resultado retornado pelos métodos ID2D1RenderTarget::EndDraw ou ID2D1RenderTarget::Flush.
Exemplos
O exemplo a seguir usa uma camada para cortar um bitmap para uma máscara geométrica. Para obter o exemplo completo, consulte 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;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 7, Windows Vista com SP2 e Atualização de Plataforma para Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2008 R2, Windows Server 2008 com SP2 e Atualização de Plataforma para Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | d2d1.h |
Biblioteca | D2d1.lib |
DLL | D2d1.dll |