Partager via


ID2D1DeviceContext ::SetTarget, méthode (d2d1_1.h)

Bitmap ou liste de commandes dans laquelle le contexte d’appareil Direct2D s’affiche désormais.

Syntaxe

void SetTarget(
  [in, optional] ID2D1Image *image
);

Paramètres

[in, optional] image

Type : ID2D1Image*

Surface ou liste de commandes dans laquelle le contexte d’appareil Direct2D s’affiche.

Valeur de retour

None

Remarques

La cible peut être modifiée à tout moment, y compris pendant le dessin du contexte.

La cible peut être une bitmap créée avec l’indicateur D2D1_BITMAP_OPTIONS_TARGET ou une liste de commandes. D’autres types d’images ne peuvent pas être définis comme cibles. Par exemple, vous ne pouvez pas définir la sortie d’un effet comme cible. Si la cible n’est pas valide, le contexte passe à l’état d’erreur D2DERR_INVALID_TARGET .

Vous ne pouvez pas utiliser SetTarget pour effectuer simultanément le rendu dans une liste bitmap/commande à partir de plusieurs contextes d’appareil. Une image est considérée comme « en cours de rendu » si elle a déjà été définie sur un contexte d’appareil dans un intervalle de temps BeginDraw/EndDraw . Si une tentative de rendu sur une image est effectuée via plusieurs contextes d’appareil, tous les contextes d’appareil suivants après le premier passent à l’état d’erreur.

Les appelants qui souhaitent attacher une image à un deuxième contexte d’appareil doivent d’abord appeler EndDraw sur le premier contexte d’appareil.

Voici un exemple de l’ordre d’appel correct.

pDC1->BeginDraw();
pDC1->SetTarget(pImage);
// …
pDC1->EndDraw();

pDC2->BeginDraw();
pDC2->SetTarget(pImage);
// …
pDC2->EndDraw();

Voici un exemple d’ordre d’appel incorrect.

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


Note La modification de la cible ne modifie pas la bitmap à partir de laquelle une cible de rendu HWND présente, ni la bitmap vers/depuis laquelle une cible de rendu de contrôleur de domaine est blt.
 
Cette API permet à une application d’utiliser facilement une bitmap en tant que source (comme dans DrawBitmap) et en tant que destination en même temps. Si vous tentez d’utiliser une bitmap en tant que source sur le même contexte d’appareil auquel elle est liée qu’une cible, le contexte de l’appareil est placé dans l’état d’erreur D2DERR_BITMAP_BOUND_AS_TARGET.

Il est acceptable d’avoir une bitmap liée en tant que bitmap cible sur plusieurs cibles de rendu à la fois. Les applications qui effectuent cette opération doivent synchroniser correctement le rendu avec Flush ou EndDraw.

Vous pouvez modifier la cible à tout moment, y compris pendant le dessin du contexte.

Vous pouvez définir la cible sur NULL, auquel cas les appels de dessin placent le contexte de l’appareil dans un état d’erreur avec D2DERR_WRONG_STATE. L’appel de SetTarget avec une cible NULL ne restaure pas la bitmap cible d’origine dans le contexte de l’appareil.

Si le contexte de l’appareil a un HDC en attente, le contexte entre dans l’état d’erreur D2DERR_WRONG_STATE . La cible ne sera pas modifiée.

Si l’image bitmap et le contexte de l’appareil ne se trouvent pas dans le même domaine de ressource, le contexte passe à \ l’état d’erreur. La cible ne sera pas modifiée.

ID2D1RenderTarget ::GetPixelSize retourne la taille de la bitmap cible actuelle (ou 0, 0) si aucune bitmap n’est liée). ID2D1RenderTarget ::GetSize retourne la taille de pixels de la bitmap actuelle mise à l’échelle par la ppp de la cible de rendu. SetTarget n’affecte pas la ppp de la cible de rendu.

ID2D1RenderTarget ::GetPixelFormat retourne le format de pixel de la bitmap cible actuelle (ou DXGI_FORMAT_UNKNOWN, D2D1_ALPHA_MODE_UNKNOWN s’il n’y en a pas).

ID2D1Bitmap ::CopyFromRenderTarget copie à partir de la bitmap cible actuellement liée.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8 et mise à jour de plateforme pour Windows 7 [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2012 et mise à jour de plateforme pour Windows Server 2008 R2 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête d2d1_1.h
DLL D2d1.dll

Voir aussi

ID2D1Bitmap1

ID2D1DeviceContext

ID2D1DeviceContext ::CreateBitmap

ID2D1DeviceContext ::GetTarget