MaskBlt 函数 (wingdi.h)
MaskBlt 函数使用指定的蒙板和光栅操作组合源位图和目标位图的颜色数据。
语法
BOOL MaskBlt(
[in] HDC hdcDest,
[in] int xDest,
[in] int yDest,
[in] int width,
[in] int height,
[in] HDC hdcSrc,
[in] int xSrc,
[in] int ySrc,
[in] HBITMAP hbmMask,
[in] int xMask,
[in] int yMask,
[in] DWORD rop
);
参数
[in] hdcDest
目标设备上下文的句柄。
[in] xDest
目标矩形左上角的 x 坐标(以逻辑单位为单位)。
[in] yDest
目标矩形左上角的 y 坐标(以逻辑单位为单位)。
[in] width
目标矩形和源位图的宽度(以逻辑单元表示)。
[in] height
目标矩形和源位图的高度(以逻辑单元表示)。
[in] hdcSrc
要从中复制位图的设备上下文的句柄。 如果 dwRop 参数指定不包含源的光栅操作,则该值必须为零。
[in] xSrc
源位图左上角的 x 坐标(以逻辑单位为单位)。
[in] ySrc
源位图左上角的 y 坐标(以逻辑单位为单位)。
[in] hbmMask
单色掩码位图的句柄,该位图与源设备上下文中的颜色位图相结合。
[in] xMask
hbmMask 参数指定的掩码位图的水平像素偏移量。
[in] yMask
hbmMask 参数指定的掩码位图的垂直像素偏移量。
[in] rop
前台和后台三元光栅操作代码 (RP) 函数用来控制源和目标数据的组合。 背景光栅操作码存储在此值高位字的高位字节中;前景光栅操作码存储在此值高位字的低位字节中;此值的低位字被忽略,应为 0。 宏 MAKEROP4 创建前台和背景光栅操作代码的此类组合。
有关此函数上下文中的前景和背景的讨论,请参阅以下“备注”部分。
有关) (RP 的常见光栅操作代码的列表,请参阅 BitBlt 函数。 请注意,捕获BLT ROP 通常不能用于打印设备上下文。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。
注解
MaskBlt 函数使用依赖于设备的位图。
hbmMask 指定的掩码中的值 1 表示应在该位置应用 dwRop 指定的前台光栅操作代码。 掩码中的值 0 表示应在该位置应用 dwRop 指定的背景光栅操作代码。
如果光栅操作需要源,则掩码矩形必须覆盖源矩形。 如果没有,该函数将失败。 如果光栅操作不需要源,则掩码矩形必须覆盖目标矩形。 如果没有,该函数将失败。
如果调用此函数时源设备上下文的旋转或扭曲转换有效,则会发生错误。 但是,允许其他类型的转换。
如果源位图、图案位图和目标位图的颜色格式不同,则此函数转换图案和/或源格式以匹配目标格式。
如果掩码位图不是单色位图,则会发生错误。
记录增强型图元文件时, (发生错误,如果源设备上下文标识增强型图元文件设备上下文,则函数返回 FALSE) 。
并非所有设备都支持 MaskBlt 函数。 应用程序应使用 nIndex 参数作为RC_BITBLT调用 GetDeviceCaps 函数,以确定设备是否支持此函数。
如果未提供掩码位图,则此函数的行为与 BitBlt 完全相同,使用前台光栅操作代码。
Icm: 发生 blits 时,不执行颜色管理。
在多监视器系统中使用时, hdcSrc 和 hdcDest 必须引用同一设备,否则函数将失败。 若要在不同设备的 DC 之间传输数据,请通过调用 GetDIBits 将内存位图 (兼容位图或 DDB) 转换为 DIB。 若要向第二台设备显示 DIB,请调用 SetDIBits 或 StretchDIBits。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | wingdi.h (包括 Windows.h) |
Library | Gdi32.lib |
DLL | Gdi32.dll |