Partager via


structure DXGK_GDIARG_STRETCHBLT (d3dkmddi.h)

La structure DXGK_GDIARG_STRETCHBLT décrit les caractéristiques d’une opération de transfert de bloc de bits (bitblt) à accélération matérielle GDI.

Syntaxe

typedef struct _DXGK_GDIARG_STRETCHBLT {
  [in] RECT  SrcRect;
  [in] RECT  DstRect;
  [in] UINT  DstAllocationIndex;
  [in] UINT  SrcAllocationIndex;
       UINT  NumSubRects;
  [in] RECT  *pSubRects;
  union {
    struct {
      UINT Mode : 16;
      UINT MirrorX : 1;
      UINT MirrorY : 1;
    };
    [in] UINT Flags;
  };
  [in] UINT  SrcPitch;
} DXGK_GDIARG_STRETCHBLT;

Membres

[in] SrcRect

Structure RECT qui définit la zone rectangulaire à copier. Ce rectangle est spécifié dans le système de coordonnées de la surface source et est défini par deux points : supérieur gauche et inférieur droit. Les deux points qui définissent le rectangle sont toujours bien classés.

Le rectangle source ne dépasse jamais les limites de la surface source, de sorte qu’il ne dépasse jamais la surface source.

Ce rectangle est mappé au rectangle de destination défini par DstRect.

Pour plus d’informations, consultez la section Remarques.

[in] DstRect

Structure RECT qui définit la zone rectangulaire à modifier. Ce rectangle est spécifié dans le système de coordonnées de la surface de destination et est défini par deux points : supérieur gauche et inférieur droit. Le rectangle est exclusif en bas à droite ; autrement dit, ses bords inférieur et droit ne font pas partie du transfert de bloc de bits. Les deux points qui définissent le rectangle sont toujours bien classés.

Le rectangle de destination défini par DstRect peut dépasser les limites de la surface de destination, mais les sous-rectangles ne peuvent pas. En outre, tous les sous-rectangles sont garantis pour s’adapter à l’intérieur de la surface de destination. Les sous-rectangles peuvent être contraints plus loin par un rectangle englobant plus petit que le rectangle de destination.

Pour plus d’informations, consultez la section Remarques.

[in] DstAllocationIndex

Index de l’élément dans la liste d’allocation qui spécifie l’allocation référencée par le rectangle de destination DstRect.

[in] SrcAllocationIndex

Index de l’élément dans la liste d’allocation qui spécifie l’allocation référencée par le rectangle source SrcRect.

NumSubRects

Nombre de sous-rectangles dans l’espace de surface de destination délimité par le rectangle de destination DstRect rectangle de destination.

[in] pSubRects

Pointeur vers les sous-rectangles de l’espace de la surface de destination délimité par le rectangle de destination DstRect rectangle de destination.

[in] Mode

Spécifie comment les pixels sources sont combinés pour produire des pixels de sortie selon que les valeurs suivantes définies dans Wingdi.h sont définies :

Valeur Signification
BLACKONWHITE Sur un transfert de bloc de bits réduit, les pixels doivent être combinés à une opération BOOlean AND. Sur un transfert de bloc de bits étendu, les pixels doivent être répliqués.
WHITEONBLACK Sur un transfert de bloc de bits réduit, les pixels doivent être combinés avec une opération OR booléenne. Sur un transfert de bloc de bits étendu, les pixels doivent être répliqués.

Ce type d’opération ne sera traité que si le pilote a défini le membre SupportMonoStretchBltModes dans la structure DXGK_PRESENTATIONCAPS.

[in] MirrorX

Spécifie si le transfert de bloc de bits étendu est effectué en mode miroir dans le xdirection. Ce type d’opération ne sera traité que si la valeur de MirrorX n’est pas nulle et que le pilote a défini le membre SupportMirrorStretchBlt dans la structure DXGK_PRESENTATIONCAPS.

[in] MirrorY

Spécifie si le transfert de bloc de bits étendu est effectué en mode miroir dans le sens y. Ce type d’opération ne sera traité que si la valeur de MirrorY n’est pas nulle et que le pilote a défini le membre SupportMirrorStretchBlt dans la structure DXGK_PRESENTATIONCAPS.

[in] Flags

Valeur UINT facultative qui peut être utilisée pour déboguer le code du pilote.

[in] SrcPitch

Hauteur de l’aire source, en octets.

Remarques

Les ratios d’étirement x et y sont calculés respectivement en fonction des ratios des tailles x et y des DstRect et des membres SrcRect.

Le mode HALFTONE et les modes STRETCH_HALFTONE définis dans Wingdi.h ne seront jamais définis dans le membre Mode. Le mode COLORONCOLOR peut être défini dans les structures DXGK_GDIARG_ALPHABLEND et DXGK_GDIARG_TRANSPARENTBLT.

Lorsque des sous-rectangles sont transformés en espace de surface source, le résultat est garanti dans la surface source. La transformation des coordonnées d’un sous-rectangle dans la surface de destination en coordonnées dans la surface source est définie par les formules suivantes, où

  • (Xd, Yd) est un point à l’intérieur du sous-rectangle
  • (Xs, Ys) est un point à l’intérieur du rectangle source
float Ws = SrcRect.right - SrcRect.left;
float Wd = DstRect.right - DstRect.left;
int Xs = round((Xd - DstRect.left + 0.5) * Ws/Wd + SrcRect.left - 0.5)
OR
int Xs = truncate((Xd - DstRect.left + 0.5) * Ws/Wd + SrcRect.left)

float Hs = SrcRect.bottom - SrcRect.top;
float Hd = DstRect.bottom - DstRect.top;
int Ys = round((Yd - DstRect.top + 0.5) * Hs/Hd + SrcRect.top - 0.5)
OR
int Ys = truncate((Yd - DstRect.top + 0.5) * Hs/Hd + SrcRect.top)

Exigences

Exigence Valeur
client minimum pris en charge Windows 7
d’en-tête d3dkmddi.h (include D3dkmddi.h)

Voir aussi

DXGK_GDIARG_ALPHABLEND

DXGK_GDIARG_TRANSPARENTBLT

DXGK_PRESENTATIONCAPS

RECT