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