ID2D1RenderTarget ::P méthodes ushLayer
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é.
Liste de surcharge
| Méthode | Description |
|---|---|
| PushLayer (paramètres de la _ couche D2D1 _&, ID2D1Layer * ) | 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é. |
| PushLayer ( _ paramètres de couche d2d1 _ * , ID2D1Layer * ) | 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é. |
Notes
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 transformations universelles 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 flush est appelé avant que toutes les couches en suspens soient dépilé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’en même temps. 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 des ressources de couche différentes.
Pour obtenir un exemple, consultez Comment découper une région avec des couches.
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é, vérifiez le résultat retourné par les méthodes ID2D1RenderTarget :: EndDraw ou ID2D1RenderTarget :: Flush .
Exemples
L’exemple suivant utilise une couche pour découper une image bitmap en un masque géométrique. Pour obtenir un exemple complet, consultez Comment découper 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;
}
Spécifications
| Condition requise | Valeur |
|---|---|
| En-tête |
|
| Bibliothèque |
|
| DLL |
|
Voir aussi
�
�