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 时,不执行颜色管理。

在多监视器系统中使用时, hdcSrchdcDest 必须引用同一设备,否则函数将失败。 若要在不同设备的 DC 之间传输数据,请通过调用 GetDIBits 将内存位图 (兼容位图或 DDB) 转换为 DIB。 若要向第二台设备显示 DIB,请调用 SetDIBitsStretchDIBits

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 wingdi.h (包括 Windows.h)
Library Gdi32.lib
DLL Gdi32.dll

另请参阅

BitBlt

位图函数

位图概述

GetDIBits

GetDeviceCaps

PlgBlt

SetDIBits

StretchBlt

StretchDIBits