遇到一个GIF显示的问题。
在网上下载了CPicture类,但其中对GIF透明部分是填充对话框颜色进行处理的。我想在一张大的GIF图上放一张小的GIF图,这样小的GIF图透明部分就变成了对话框颜色,挡住了后面的图。
哪路神仙帮帮忙,看有没有办法让GIF图透明色真正的透明。
在网上下载了CPicture类,但其中对GIF透明部分是填充对话框颜色进行处理的。我想在一张大的GIF图上放一张小的GIF图,这样小的GIF图透明部分就变成了对话框颜色,挡住了后面的图。
哪路神仙帮帮忙,看有没有办法让GIF图透明色真正的透明。
BOOL TransparentBlt(
HDC hdcDest, // handle to destination DC
int nXOriginDest, // x-coord of destination upper-left corner
int nYOriginDest, // y-coord of destination upper-left corner
int nWidthDest, // width of destination rectangle
int hHeightDest, // height of destination rectangle
HDC hdcSrc, // handle to source DC
int nXOriginSrc, // x-coord of source upper-left corner
int nYOriginSrc, // y-coord of source upper-left corner
int nWidthSrc, // width of source rectangle
int nHeightSrc, // height of source rectangle
UINT crTransparent // color to make transparent
);要加上 #pragma comment (lib,"msimg32.lib") 最后一个参数crTransparent 你需要从GIF图片数据里取得对应的透明色
-----------------------------------------
在这里想办法!不要用 TransparentBlt ,那个东西很不理想,因为图片中颜色是不确定的,而且这个 API 耗时较长!提醒你一下:用兼容 DC 可以实现。
目前我也正在这方面想办法,但遇到了一个新的问题。
我们知道GIF的用RENDER来绘图的,但多张重叠的时候会造成出来的图乱七八糟。于是我想用多个HDC保存起来再将它们合成,但不知道应该怎样合成?