
在code blocks中使用TransparentBlt()函数时,需要对源设备环境中的矩形区域像素的颜色数据进行位块(bit_block)转换,并将结果置于目标设备环境。这个函数原型如下:BOOL TransparentBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, UINT crTransparent)。这里详细解释一下各个参数的含义:nXOriginDest:目标矩形左上角的X轴坐标,坐标以逻辑单位表示;nYOriginDest:目标矩形左上角的Y轴坐标,坐标以逻辑单位表示;nHeightDest:目标矩形的高度;nXOriginSrc:源矩形(左上角)的X轴坐标,坐标以逻辑单位表示;nYOriginsrc:源矩形(左上角)的Y轴坐标,坐标以逻辑单位表示;nWidthSrc:源矩形的宽度;nHeightSrc:源矩形的高度;crTransparent:源位图中的RGB值当作透明颜色,需注意的是,使用RGB(0,0,0)也就是黑色是无效的。函数执行成功时,返回值为TRUE;如果函数执行失败,返回值为FALSE。若想获取更多错误信息,可以在Windows NT系统中调用GetLastError函数。值得注意的是,TransparentBlt支持4位/像素和8位/像素格式的源位图,而使用AlphaBlend可以指定带有透明度的32位/像素格式的位图。如果源和目标矩形的大小不一致,源位图将被拉伸以与目标矩形匹配,同时SetStretchBltMode函数中的BLACKONWHITE和WHITEONBLACK两种模式将被转换成TransparentBlt函数的COLORONCOLOR模式。目标设备环境决定了目标坐标的变换类型,而源设备环境则决定了源坐标使用的变换类型。如果源位图或目标位图的宽度或高度是负数,TransparentBlt函数将不对位图进行镜像。对于Windows NT系统,从5.0及以上版本开始支持;对于Windows系统,从98及以上版本开始支持;而对于Windows CE系统,则从Windows CE .NET 4.0及之后版本开始支持。此函数在wingdi.h头文件中定义,并作为msimg32.dll中的资源被包含。
