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。 请参阅 BLENDFUNCTIONEMRALPHABLEND 结构。

返回值

如果函数成功,则返回值为 TRUE

如果函数失败,则返回值为 FALSE

注解

如果源矩形和目标矩形的大小不同,则拉伸源位图以匹配目标矩形。 如果使用 SetStretchBltMode 函数,则此函数的 iStretchMode 值将自动转换为 COLORONCOLOR, (即 BLACKONWHITE、WHITEONBLACK 和 HALFTONE 更改为 COLORONCOLOR) 。

通过使用当前为目标设备上下文指定的转换来转换目标坐标。 通过使用当前为源设备上下文指定的转换来转换源坐标。

(发生错误,如果源设备上下文标识了增强的图元文件设备上下文,则函数返回 FALSE) 。

如果目标和源位图的颜色格式不同, AlphaBlend 将转换源位图以匹配目标位图。

AlphaBlend 不支持镜像。 如果源或目标的宽度或高度为负值,则此调用将失败。

呈现到打印机时,首先使用 SHADEBLENDCAPS 调用 GetDeviceCaps ,以确定打印机是否支持与 AlphaBlend 混合。 请注意,对于显示 DC,支持所有混合操作,这些标志表示操作是否加速。

如果源和目标图面相同,即它们既是屏幕,又是同一内存位图,并且源矩形和目标矩形重叠,则会发生错误,并且函数返回 FALSE

源矩形必须完全位于源图面中,否则会发生错误,函数返回 FALSE

如果源或目标的宽度或高度为负值,AlphaBlend 将失败。

BLENDFUNCTIONSourceConstantAlpha 成员指定要在整个源位图上使用的 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

另请参阅

BLENDFUNCTION

位图函数

位图概述

EMRALPHABLEND

GetDeviceCaps

SetStretchBltMode