勇芳软件工作室.汉化:  Bitmaps > Bitmap Functions >

MaskBlt

Previous pageReturn to chapter overviewNext page

描述

 

MaskBlt功能使用指定的掩码和光栅操作组合源和目标位图的颜色数据。

 

C++ 语法

 

BOOL MaskBlt(

__in HDC hdcDest,

__in int nXDest,

__in int nYDest,

__in int nWidth,

__in int nHeight,

__in HDC hdcSrc,

__in int nXSrc,

__in int nYSrc,

__in HBITMAP hbmMask,

__in int xMask,

__in int yMask,

DWORD dwRop

);

 

PowerBASIC 语法

 

FUNCTION MaskBlt( _

BYVAL hdcDest AS DWORD, _

BYVAL nXDest AS LONG, _

BYVAL nYDest AS LONG, _

BYVAL nWidth AS LONG, _

BYVAL nHeight AS LONG, _

BYVAL hdcSrc AS DWORD, _

BYVAL nXSrc AS LONG, _

BYVAL nYSrc AS LONG, _

BYVAL hbmMask AS DWORD, _

BYVAL xMask AS LONG, _

BYVAL yMask AS LONG, _

BYVAL dwRop AS DWORD _

) AS LONG

 

参数

 

hdcDest

 

[in]处理目标设备上下文。

 

nXDest

 

[in]指定目标矩形左上角的x坐标(以逻辑为单位)。

 

nYDest

 

[in]指定目标矩形左上角的y坐标(以逻辑为单位)。

 

nWidth

 

[in]指定目标矩形和源位图的逻辑单位宽度。[in]以目标矩形左上角的逻辑单位指定y坐标。

 

nHeight

 

[in]指定目标矩形和源位图的逻辑单位高度。

 

hdcSrc

 

[in]处理要从中复制位图的设备上下文。如果dwRop参数指定不包含源的栅格操作,则它必须为零。

 

nXSrc

 

[in]指定源位图左上角的x坐标(以逻辑为单位)。

 

nYSrc

 

[in]指定源位图左上角的y坐标(以逻辑为单位)。

 

hbmMask

 

[in]处理单色屏幕位图与源设备上下文中的颜色位图相结合。

 

xMask

 

[in]指定由hbmMask参数指定的掩码位图的水平像素偏移量。

 

yMask

 

[in]指定由hbmMask参数指定的掩码位图的垂直像素偏移量。

 

dwRop

 

[in]指定功能用于控制源和目标数据组合的前台和后台三进制栅格操作代码(ROP)。背景光栅操作码存储在该值的高位字的高位字节中;前景光栅操作码存储在该值的高位字的低位字节中;该值的低位字被忽略,应为零。宏MAKEROP4创建前景和后台光栅操作代码的组合。

 

有关此函数上下文中前景和背景的讨论,请参阅以下备注部分。

 

有关常见栅格操作代码(ROP)的列表,请参阅BitBlt功能。请注意,CAPTUREBLT ROP通常不能用于打印设备上下文。

 

返回值

 

如果函数成功,返回值不为零。

 

如果函数失败,返回值为零。

 

Windows NT / 2000 / XP / Vista / Windows 7:要获取扩展错误信息,请调用GetLastError.

 

备注

 

MaskBlt功能使用与设备相关的位图。

 

hbmMask指定的掩码中的值为1表示由dwRop指定的前台光栅操作码应在该位置应用。掩码中的值为0表示由dwRop指定的背景光栅操作码应在该位置应用。

 

如果栅格操作需要源,则掩码矩形必须覆盖源矩形。如果没有,该函数将失败。如果光栅操作不需要源,则掩码矩形必须覆盖目标矩形。如果没有,该函数将失败。

 

如果在调用此函数时旋转或剪切变换对源设备上下文有效,则会发生错误。但是,允许其他类型的转换。

 

如果源,模式和目标位图的颜色格式不同,则此函数将模式或源格式或两者转换为匹配目标格式。

 

如果掩码位图不是单色位图,则会发生错误。

 

当记录增强的图元文件时,如果源设备上下文识别增强型图元文件设备上下文,则会发生错误(并且函数返回FALSE)。

 

并非所有设备都支持MaskBlt功能。应用程序应调用GetDeviceCaps功能来确定设备是否支持此函数。

 

如果没有提供掩码位图,则使用前景光栅操作代码,此函数的行为与BitBlt完全相同。

 

ICM:发生blits时不执行颜色管理。

 

Windows 2000 / XP / Vista / Windows 7:当在多监视器系统中使用时,hdcSrchdcDest都必须引用同一个设备,否则该函数将失败。要在不同设备的DC之间传输数据,请通过调用GetDIBits将内存位图(兼容位图或DDB)转换为DIB。要将DIB显示到第二个设备,请调用SetDIBitsStretchDIBits.

 

引用文件 #INCLUDE Once

 

WinGdi.inc(包括Windows.inc)