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