Partager via


MÉTHODE ID2D1RenderTarget ::P ushLayer(constD2D1_LAYER_PARAMETERS&,ID2D1Layer*) (d2d1.h)

Ajoute la couche spécifiée à la cible de rendu afin qu’elle reçoive toutes les opérations de dessin suivantes jusqu’à ce que PopLayer soit appelé.

Syntaxe

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

Paramètres

[ref] layerParameters

Type : const D2D1_LAYER_PARAMETERS

Les limites de contenu, le masque géométrique, l’opacité, le masque d’opacité et les options d’anticrénelage pour le calque.

[in] layer

Type : ID2D1Layer*

Couche qui reçoit les opérations de dessin suivantes.

Note À compter de Windows 8, ce paramètre est facultatif. Si aucune couche n’est spécifiée, Direct2D gère automatiquement la ressource de couche.
 

Valeur de retour

None

Remarques

La méthode PushLayer permet à un appelant de commencer à rediriger le rendu vers une couche. Toutes les opérations de rendu sont valides dans une couche. L’emplacement de la couche est affecté par le jeu de transformation mondiale sur la cible de rendu.

Chaque PushLayer doit avoir un appel PopLayer correspondant. S’il y a plus d’appels PopLayer que d’appels PushLayer , la cible de rendu est placée dans un état d’erreur. Si Vidage est appelé avant que toutes les couches en attente ne soient déclenchées, la cible de rendu est placée dans un état d’erreur et une erreur est retournée. L’état d’erreur peut être effacé par un appel à EndDraw.

Une ressource ID2D1Layer particulière ne peut être active qu’à la fois. En d’autres termes, vous ne pouvez pas appeler une méthode PushLayer , puis suivre immédiatement une autre méthode PushLayer avec la même ressource de couche. Au lieu de cela, vous devez appeler la deuxième méthode PushLayer avec différentes ressources de couche.

Cette méthode ne retourne pas de code d’erreur en cas d’échec. Pour déterminer si une opération de dessin (telle que PushLayer) a échoué, case activée le résultat retourné par les méthodes ID2D1RenderTarget ::EndDraw ou ID2D1RenderTarget ::Flush.

Exemples

L’exemple suivant utilise une couche pour couper une image bitmap en masque géométrique. Pour obtenir l’exemple complet, consultez Comment cliper un masque géométrique.

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7, Windows Vista avec SP2 et Mise à jour de plateforme pour Windows Vista [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2008 R2, Windows Server 2008 avec SP2 et Mise à jour de plateforme pour Windows Server 2008 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête d2d1.h
Bibliothèque D2d1.lib
DLL D2d1.dll

Voir aussi

ID2D1RenderTarget

Vue d’ensemble des couches

PopLayer