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