CDC::MaskBlt

BOOL MaskBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, CBitmap& maskBitmap, int xMask, int yMask, DWORD dwRop );

返回值:如果成功,则返回非零值,否则为0。

参数:
x目标矩形的X逻辑坐标。
y目标矩形的Y逻辑坐标。
nWidth目标矩形和源位图的宽度(逻辑单位)。
nHeight目标矩形和源位图的高度(逻辑单位)。
pSrcDC拷贝位图的设备上下文标识,如果dwRop参数指定了一个没有源对象的光栅操作,该参数必须设置为0。
xSrc源位图左上角的X逻辑坐标。
ySrc源位图左上角的Y逻辑坐标。
maskBitmap在源设备上下文中黑白掩码位图与彩色位图的标识。
xMaskmaskBitmap设定的掩码位图的水平像素偏移量。
yMaskmaskBitmap设定的掩码位图的水平像素偏移量。
dwRop指定函数用于控制源数据和目标数据的前景和背景光栅操作代码。背景光栅操作代码存放在该值的高字区的高字节中。前景光栅操作代码存放在该值的低字区的低字节中。宏MAKEROP4实现了背景与前景光栅操作代码的联合。请参阅说明部分对前景和背景的讨论。一般光栅操作代码列表见BitBlt成员函数。

说明:
使用给定的掩码和光栅操作组合源位图和目标位图中的彩色数据。
maskBitmap设置的掩码值为1,表明dwRop指定的前景光栅操作代码应在该位置上得以应用。
maskBitmap设置的掩码值为0,表明dwRop指定的背景光栅操作代码应在该位置上得以应用。
如果光栅操作需要源对象,掩码矩形必须覆盖源矩形,否则会导致失败。如果光栅操作不需要源对象,掩码矩形必须覆盖目标矩形,否则会导致失败。 当调用该函数时,源设备上下文中的旋转和修剪转换能起作用,则出错。但允许其它的类型转换。如果源位图、模式位图和目标位图的格式不一致,函数将使模式或源位图,或使二者都与目标位图格式匹配。如果掩码位图不是黑白位图,则出错。如果源设备上下文中标识了元文件设备上下文,在记录元文件时会出错(此时函数返回0)。不是所有设备都支持MaskBlt,应用可调用GetDeviceCaps来决定是否支持该函数,如果没有提供掩码位图,函数则与BitBlt行为一致,所有前景光栅操作代码。在源设备上下文的位图中,掩码位图的像素偏移与(0,0)点映射。在掩码位图包含一组位图时,这一点很有用。应用通过调整送往MaskBlt的像素偏移和矩形尺寸,就可以很容易地应用任一掩码。

请参阅:
CDC::BitBlt, CDC::GetDeviceCaps, CDC::PlgBlt, CDC::StretchBlt, ::MaskBlt