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