MaskBlt - [Daliy APIs]

MaskBlt 


该函数使用特定的掩码和光栅操作来对源和目标位图的颜色数据进行组合。

原型:

BOOL MaskBlt(

    HDC  hdcDest

    int  nXDest,  int  nYDest,  int  nWidth,  int  nHeight

    HDC hdcSrc,

    int  nXSrc,  int  nYSrc

    HBITMAP hbmMask

    int  xMask, int  yMask

    DWORD  dwRop);

参数:

hdcDest:指向目标设备环境的句柄。

nXDest、nYDest:指定目标矩形左上角的逻辑X、Y坐标。

nWidth、nHeight:指定目标矩形和源位图的宽度、高度,按逻辑单位。

hdcSrc:指向源位图所在的设备环境,如果dwRop参数规定的光栅操作不包括源位图,那么该参数必须为0。

nXSrc、nYSrc:指定源位图左上角的逻辑X、Y坐标。

nbmMask:指向单色掩码位图的句柄,该位图与源设备环境中的彩色位图进行组合。

xMask、yMask:指定由参数hbmMask指向的掩码位图的水平、垂直像素偏移量。

dwRop:指定前景和背景光栅操作码,函数使用这些操作码为控制源和目标数据的组合。背景光栅操作码存储在该参数值的高位字中的高位字节中,而前景光栅操作代码雄在该参数值的高位字中的低位字节中,而低位字则忽略,并且应该为0。宏MAKEROP4创建前景和背景光栅操作码这样的组合。

   有关该函数场景中的前景和背景方面的讨论,可参考下面的备注说明。

   至于有关公用的光栅操作码清单,可参考BitBlt函数。

   Windows CE 1.0 and 1.01 只支持 SRCCOPY and SRCINVERT 光栅操作。

返回值:

   如果函数执行成功,那么返回值为非零,如果函数失败,那么返回值为0。获得更多错误信息,请调用GetLastError函数。

备注:

   在由hbmMask指定的掩码中,数值1表示在那个位置应使用dwRop指定的前景光栅操作码。数值0表示应使用dwRop指定的背景光栅操作码。

   如果光栅操作需要源对象,那么掩码矩形必须覆盖源矩形。如果没有覆盖,那么函数会执行失败。如果光栅操作没有要求源对象,那么掩码矩形必须覆盖目标矩形,如果没有覆盖,那么函数会失败。

   如果在调用函数时,源设备环境中实行旋转或剪切变换,那么会出现错误。然而,允许有其他类型的变换。

   如果源位图的颜色格式、模式和目标位图不一样,那么该函数对模式或源位图格式,或者两者进行转换,以与目标格式匹配。

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

   当正在记录的是增强型图元文件时,如果源设备环境标识为增强型图元文件设备环境,那么会出现错误(该函数返回FALSE)。

   不是所有设备都支持MaskBlt函数,应用程序应调用GETDeviceCaps函数来确定设备是否支持该函数。

   如果没有提供掩码位图,那么该函数非常类似BitBlt,它使用前景光栅操作码。 

 

参考:

互动百科:  MaskBlt  

MSDN:  MaskBlt   

 

 

 

 

posted on 2010-01-21 15:44  listenlisten  阅读(640)  评论(0编辑  收藏  举报

导航