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 étendu (bitblt) accélérée par le matériel 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 : en haut à gauche et en bas à droite. Les deux points qui définissent le rectangle sont toujours bien ordonnés.

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

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

Pour plus d'informations, consultez la section Notes.

[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 : en haut à gauche et en bas à droite. Le rectangle est exclusif en bas à droite ; autrement dit, ses bords inférieur et droit ne font pas partie du transfert de bloc binaire. Les deux points qui définissent le rectangle sont toujours bien ordonnés.

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

Pour plus d'informations, consultez la section Notes.

[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 limité par le rectangle de destination DstRect .

[in] pSubRects

Pointeur vers les sous-rectangles dans l’espace de surface de destination qui est limité par le rectangle de destination DstRect .

[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 ou non :

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

Ce type d’opération est traité uniquement 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 stretch sera effectué en mode miroir dans le xdirection. Ce type d’opération est traité uniquement si la valeur de MirrorX est différente de zéro et si 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 sera effectué en mode miroir dans la direction y. Ce type d’opération est traité uniquement si la valeur de MirrorY est différente de zéro et si 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

Tangage de la surface source, en octets.

Remarques

Les ratios d’étirement x et y sont calculés respectivement en tant que ratios des tailles x et y des membres DstRect et 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 à l’intérieur de 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)

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7
En-tête d3dkmddi.h (include D3dkmddi.h)

Voir aussi

DXGK_GDIARG_ALPHABLEND

DXGK_GDIARG_TRANSPARENTBLT

DXGK_PRESENTATIONCAPS

RECT