ID2D1DeviceContext::SetTarget-Methode (d2d1_1.h)
Die Bitmap oder Befehlsliste, in die der Direct2D-Gerätekontext nun gerendert wird.
Syntax
void SetTarget(
[in, optional] ID2D1Image *image
);
Parameter
[in, optional] image
Typ: ID2D1Image*
Die Oberflächen- oder Befehlsliste, auf die der Direct2D-Gerätekontext gerendert wird.
Rückgabewert
Keine
Bemerkungen
Das Ziel kann jederzeit geändert werden, auch während der Kontext zeichnet.
Das Ziel kann entweder eine Bitmap sein, die mit dem flag D2D1_BITMAP_OPTIONS_TARGET erstellt wurde, oder es kann sich um eine Befehlsliste handeln. Andere Arten von Bildern können nicht als Ziel festgelegt werden. Beispielsweise können Sie die Ausgabe eines Effekts nicht als Ziel festlegen. Wenn das Ziel ungültig ist, wechselt der Kontext in den D2DERR_INVALID_TARGET Fehlerzustand.
Sie können SetTarget nicht verwenden, um aus mehreren Gerätekontexten gleichzeitig in einer Bitmap-/Befehlsliste zu rendern. Ein Bild wird als "in gerendert" betrachtet, wenn es jemals innerhalb eines BeginDraw/EndDraw-Zeitraums für einen Gerätekontext festgelegt wurde. Wenn versucht wird, ein Bild über mehrere Gerätekontexte zu rendern, werden alle nachfolgenden Gerätekontexte nach dem ersten in einen Fehlerzustand versetzt.
Aufrufer, die ein Bild an einen zweiten Gerätekontext anfügen möchten, sollten zuerst EndDraw für den ersten Gerätekontext aufrufen.
Hier sehen Sie ein Beispiel für die richtige Aufrufreihenfolge.
pDC1->BeginDraw();
pDC1->SetTarget(pImage);
// …
pDC1->EndDraw();
pDC2->BeginDraw();
pDC2->SetTarget(pImage);
// …
pDC2->EndDraw();
Hier sehen Sie ein Beispiel für die falsche Aufrufreihenfolge.
pDC1->BeginDraw();
pDC2->BeginDraw();
pDC1->SetTarget(pImage);
// ...
pDC1->SetTarget(NULL);
pDC2->SetTarget(pImage); // This call is invalid, even though pImage is no longer set on pDC1.
// ...
pDC1->EndDraw(); // This EndDraw SUCCEEDs.
pDC2->EndDraw(); // This EndDraw FAILs
Es ist akzeptabel, eine Bitmap als Zielbitbit auf mehreren Renderzielen gleichzeitig zu binden. Anwendungen, die dies tun, müssen das Rendering ordnungsgemäß mit Flush oder EndDraw synchronisieren.
Sie können das Ziel jederzeit ändern, auch während der Kontext zeichnet.
Sie können das Ziel auf NULL festlegen. In diesem Fall versetzen Zeichnungsaufrufe den Gerätekontext mit D2DERR_WRONG_STATE in einen Fehlerzustand. Wenn Sie SetTarget mit einem NULL-Ziel aufrufen, wird die ursprüngliche Zielbit nicht im Gerätekontext wiederhergestellt.
Wenn der Gerätekontext über eine ausstehende HDC verfügt, wechselt der Kontext in den D2DERR_WRONG_STATE Fehlerzustand. Das Ziel wird nicht geändert.
Wenn sich die Bitmap und der Gerätekontext nicht in derselben Ressourcendomäne befinden, wechselt der Kontext in den \ Fehlerzustand. Das Ziel wird nicht geändert.
ID2D1RenderTarget::GetPixelSize gibt die Größe der aktuellen Zielbit zurück (oder 0, 0), wenn keine Bitmap gebunden ist). ID2D1RenderTarget::GetSize gibt die Pixelgröße der aktuellen Bitmap zurück, die um den DPI-Wert des Renderziels skaliert wird. SetTarget wirkt sich nicht auf den DPI-Wert des Renderziels aus.
ID2D1RenderTarget::GetPixelFormat gibt das Pixelformat der aktuellen Zielbit zurück (oder DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_UNKNOWN, wenn keine vorhanden ist).
ID2D1Bitmap::CopyFromRenderTarget-Kopien aus der aktuell gebundenen Zielbitbitbit.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2012 und Plattformupdate für Windows Server 2008 R2 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | d2d1_1.h |
DLL | D2d1.dll |