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.

Nota Começando com Windows 8, esse parâmetro é opcional. Se uma camada não for especificada, Direct2D gerenciará o recurso de camada automaticamente.
 

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

Confira também

ID2D1RenderTarget

Visão geral das camadas

PopLayer