Partager via


structure DXGK_GDIARG_ALPHABLEND (d3dkmddi.h)

La structure DXGK_GDIARG_ALPHABLEND décrit les caractéristiques d’une opération de fusion alpha accélérée par le matériel GDI.

Syntaxe

typedef struct _DXGK_GDIARG_ALPHABLEND {
  [in] RECT    SrcRect;
  [in] RECT    DstRect;
  [in] UINT    SrcAllocationIndex;
  [in] UINT    DstAllocationIndex;
  [in] UINT    NumSubRects;
  [in] RECT    *pSubRects;
  [in] BYTE    SourceConstantAlpha;
  [in] BOOLEAN SourceHasAlpha;
  [in] UINT    SrcPitch;
} DXGK_GDIARG_ALPHABLEND;

Membres

[in] SrcRect

Structure RECT qui définit la zone rectangulaire à copier. Ce rectangle source 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. Ce rectangle 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 les 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.

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

[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] 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 dans l’espace de surface de destination.

[in] SourceConstantAlpha

Facteur de fusion constant à appliquer à l’ensemble de la surface source. Cette valeur se trouve dans la plage de [0,255], où 0 est complètement transparent et 255 est complètement opaque.

[in] SourceHasAlpha

Définit si la surface est supposée avoir un canal alpha. Si TRUE, la surface est supposée avoir un canal alpha ; sinon, la valeur est FALSE.

[in] SrcPitch

Hauteur de l’aire source, en octets.

Remarques

Si une opération de transfert de bloc de bits étendu (bitblt) est requise, les ratios d’étirement x et y sont calculés respectivement comme les ratios des tailles x et y des tailles des DstRect et SrcRect membres, et l’opération d’étirement se poursuit comme si la valeur COLORONCOLOR dans *Wingdi.h est définie. Sur un transfert de bloc de bits réduit, suffisamment de pixels doivent être ignorés afin que les pixels n’ont pas besoin d’être combinés. Sur un transfert de bloc de bits étendu, les pixels doivent être répliqués.

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)</code></pre>

Exigences

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

Voir aussi

RECT