windows API编程中使图片背景透明应该怎么做
看来你的图片知识太少, 不是几行代码能解决你的问题的:
1)学一点Alpha Channel的知识, 典型的图片格式是PNG, BITMAP32也好, 但除了VS外, 很少支持它.
2)看看GDI的AlphaBlend(...)
不去弄懂这些, 也行,不过不能随心所欲, C/C++程序员不能随心所欲也就没意思了.比如你有张带Alpha Channel的abc.png, 用GDIPlus的Image打开, 用Graphics就能透明显示.
请教函数TransparentBlt的用法
函数功能:该函数对指定的源设备环境中的矩形区域像素的颜色数据进行位块(bit_block)转换,并将结果置于目标设备环境。函数原型:BOOL TransparentBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int hHeightDest, 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两种iStretchMode模式将被转换成TransparentBlt函数的COLORONCOLOR模式。目标设备环境指定了用于目标坐标的变换类型,而源设备环境指定了源坐标使用的变换类型。如果源位图或目标位图的宽度或高度是负数,那么TransparentBlt函数也不对位图进行镜像。速查:Windows NT:5.0及以上版本;Windows:98及以上版本;Windows CE:Windows CE .NET 4.0 and later;头文件:wingdi.h:库文件:作为一个资源包含在msimg32.dll中。