ID2D1RenderTarget::P ushLayer(constD2D1_LAYER_PARAMETERS&,ID2D1Layer*)-Methode (d2d1.h)
Fügt dem Renderziel die angegebene Ebene hinzu, damit alle nachfolgenden Zeichnungsvorgänge empfangen werden, bis PopLayer aufgerufen wird.
Syntax
void PushLayer(
[ref] const D2D1_LAYER_PARAMETERS & layerParameters,
[in] ID2D1Layer *layer
);
Parameter
[ref] layerParameters
Typ: const D2D1_LAYER_PARAMETERS
Die Inhaltsgrenzen, geometrische Maske, Deckkraft, Deckkraftmaske und Antialiasingoptionen für die Ebene.
[in] layer
Typ: ID2D1Layer*
Die Ebene, die nachfolgende Zeichnungsvorgänge empfängt.
Rückgabewert
Keine
Bemerkungen
Die PushLayer-Methode ermöglicht es einem Aufrufer, mit der Umleitung des Renderings auf eine Ebene zu beginnen. Alle Renderingvorgänge sind in einer Ebene gültig. Die Position der Ebene wird von der Welttransformation beeinflusst, die auf dem Renderziel festgelegt ist.
Jeder PushLayer muss über einen entsprechenden PopLayer-Aufruf verfügen. Wenn mehr PopLayer-Aufrufe als PushLayer-Aufrufe vorhanden sind, wird das Renderziel in einen Fehlerzustand versetzt. Wenn Flush aufgerufen wird, bevor alle ausstehenden Ebenen geknallt werden, wird das Renderziel in einen Fehlerzustand versetzt, und ein Fehler wird zurückgegeben. Der Fehlerzustand kann durch einen Aufruf von EndDraw gelöscht werden.
Eine bestimmte ID2D1Layer-Ressource kann nur gleichzeitig aktiv sein. Anders ausgedrückt: Sie können keine PushLayer-Methode aufrufen und dann sofort mit einer anderen PushLayer-Methode mit derselben Schichtressource folgen. Stattdessen müssen Sie die zweite PushLayer-Methode mit unterschiedlichen Ebenenressourcen aufrufen.
Diese Methode gibt keinen Fehlercode zurück, wenn sie fehlschlägt. Überprüfen Sie das Ergebnis, das von den Methoden ID2D1RenderTarget::EndDraw oder ID2D1RenderTarget::Flush zurückgegeben wird, um festzustellen, ob bei einem Zeichnungsvorgang (z. B. PushLayer) ein Fehler aufgetreten ist.
Beispiele
Im folgenden Beispiel wird eine Ebene verwendet, um eine Bitmap in eine geometrische Maske zu schneiden. Das vollständige Beispiel finden Sie unter How to Clip to a Geometric Mask.For the complete example, see 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;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7, Windows Vista mit SP2 und Plattformupdate für Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2, Windows Server 2008 mit SP2 und Plattformupdate für Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | d2d1.h |
Bibliothek | D2d1.lib |
DLL | D2d1.dll |