DXGK_GDIARG_ALPHABLEND 结构 (d3dkmddi.h)

DXGK_GDIARG_ALPHABLEND结构描述了 GDI 硬件加速 alpha 混合操作的特征。

语法

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;

成员

[in] SrcRect

定义要复制的矩形区域的 RECT 结构。 此源矩形在源图面的坐标系中指定,由两个点定义:左上角和右下角。 定义矩形的两个点始终有序。 此矩形永远不会超过源图面的边界,因此它永远不会悬停源图面。 此矩形映射到 DstRect 定义的目标矩形。 有关更多信息,请参见备注。

[in] DstRect

定义要修改的矩形区域的 RECT 结构。 此矩形在目标图面的坐标系中指定,由两个点定义:左上角和右下角。 矩形在右下角是独占的;也就是说,其下边缘和右边缘不是位块传输的一部分。 定义矩形的两个点始终有序。

DstRect 定义的目标矩形可以超出目标图面的边界,但子矩形不能。 此外,保证所有子矩形都适合目标图面。 子矩形可以由比目标矩形小的边框进一步约束。

[in] SrcAllocationIndex

分配列表中的元素的索引,指定 SrcRect 源矩形引用的分配。

[in] DstAllocationIndex

分配列表中元素的索引,指定 DstRect 目标矩形引用的分配。

[in] NumSubRects

目标图面空间中由 DstRect 目标矩形绑定的子矩形的数目。

[in] pSubRects

指向目标图面空间中的子矩形的指针。

[in] SourceConstantAlpha

要应用于整个源图面的常量混合因子。 此值在 [0,255] 的范围内,其中 0 是完全透明的,255 是完全不透明的。

[in] SourceHasAlpha

定义是否假定图面具有 alpha 通道。 如果 为 TRUE,则假定该图面具有 alpha 通道;否则值为 FALSE

[in] SrcPitch

源图面的间距(以字节为单位)。

注解

如果需要拉伸位块传输 (bitblt) 运算,则 x 和 y 拉伸比率将分别计算为 DstRectSrcRect 成员的 x 和 y 大小的比率,拉伸操作将像设置 *Wingdi.h 中的 COLORONCOLOR 值一样进行。 在收缩位块传输时,应忽略足够的像素,以便不需要合并像素。 在拉伸位块传输中,应复制像素。

当子矩形转换为源图面空间时,结果保证在源图面内。 目标图面中的子矩形坐标到源图面中的坐标的转换由以下公式定义,其中:

  • (Xd,Yd) 是子矩形内的一个点
  • (Xs、Ys) 是源矩形内的一个点
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>

要求

要求
最低受支持的客户端 Windows 7
标头 d3dkmddi.h (包括 D3dkmddi.h)

另请参阅

矩形