alphaBlend 函数 (wingdi.h)
AlphaBlend 函数显示具有透明或半透明像素的位图。
语法
BOOL AlphaBlend(
[in] HDC hdcDest,
[in] int xoriginDest,
[in] int yoriginDest,
[in] int wDest,
[in] int hDest,
[in] HDC hdcSrc,
[in] int xoriginSrc,
[in] int yoriginSrc,
[in] int wSrc,
[in] int hSrc,
[in] BLENDFUNCTION ftn
);
参数
[in] hdcDest
目标设备上下文的句柄。
[in] xoriginDest
目标矩形左上角的 x 坐标(以逻辑单位为单位)。
[in] yoriginDest
目标矩形左上角的 y 坐标(以逻辑单位为单位)。
[in] wDest
目标矩形的宽度(以逻辑单元表示)。
[in] hDest
目标矩形的高度(以逻辑单元表示)。
[in] hdcSrc
源设备上下文的句柄。
[in] xoriginSrc
源矩形左上角的 x 坐标(以逻辑单位为单位)。
[in] yoriginSrc
源矩形左上角的 y 坐标(以逻辑单位为单位)。
[in] wSrc
源矩形的宽度(以逻辑单元表示)。
[in] hSrc
源矩形的高度(以逻辑单元表示)。
[in] ftn
源位图和目标位图的 alpha 混合函数、要应用于整个源位图的全局 alpha 值,以及源位图的格式信息。 源和目标混合函数目前仅限于AC_SRC_OVER。 请参阅 BLENDFUNCTION 和 EMRALPHABLEND 结构。
返回值
如果函数成功,则返回值为 TRUE。
如果函数失败,则返回值为 FALSE。
注解
如果源矩形和目标矩形的大小不同,则拉伸源位图以匹配目标矩形。 如果使用 SetStretchBltMode 函数,则此函数的 iStretchMode 值将自动转换为 COLORONCOLOR, (即 BLACKONWHITE、WHITEONBLACK 和 HALFTONE 更改为 COLORONCOLOR) 。
通过使用当前为目标设备上下文指定的转换来转换目标坐标。 通过使用当前为源设备上下文指定的转换来转换源坐标。
(发生错误,如果源设备上下文标识了增强的图元文件设备上下文,则函数返回 FALSE) 。
如果目标和源位图的颜色格式不同, AlphaBlend 将转换源位图以匹配目标位图。
AlphaBlend 不支持镜像。 如果源或目标的宽度或高度为负值,则此调用将失败。
呈现到打印机时,首先使用 SHADEBLENDCAPS 调用 GetDeviceCaps ,以确定打印机是否支持与 AlphaBlend 混合。 请注意,对于显示 DC,支持所有混合操作,这些标志表示操作是否加速。
如果源和目标图面相同,即它们既是屏幕,又是同一内存位图,并且源矩形和目标矩形重叠,则会发生错误,并且函数返回 FALSE。
源矩形必须完全位于源图面中,否则会发生错误,函数返回 FALSE。
如果源或目标的宽度或高度为负值,AlphaBlend 将失败。
BLENDFUNCTION 的 SourceConstantAlpha 成员指定要在整个源位图上使用的 alpha 透明度值。 SourceConstantAlpha 值与任何每像素 alpha 值组合使用。 如果 SourceConstantAlpha 为 0,则假定图像是透明的。 将 SourceConstantAlpha 值设置为 255 (这表示仅使用每像素 alpha 值时图像不透明) 。
要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | wingdi.h (包括 Windows.h) |
Library | Msimg32.lib |
DLL | Msimg32.dll |