遇到一个GIF显示的问题。
在网上下载了CPicture类,但其中对GIF透明部分是填充对话框颜色进行处理的。我想在一张大的GIF图上放一张小的GIF图,这样小的GIF图透明部分就变成了对话框颜色,挡住了后面的图。
哪路神仙帮帮忙,看有没有办法让GIF图透明色真正的透明。

解决方案 »

  1.   

    试试 
    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图片数据里取得对应的透明色
      

  2.   

    我没说清楚,所有的GIF是动画的
      

  3.   

    "对GIF透明部分是填充对话框颜色进行处理的"
    -----------------------------------------
    在这里想办法!不要用 TransparentBlt ,那个东西很不理想,因为图片中颜色是不确定的,而且这个 API 耗时较长!提醒你一下:用兼容 DC 可以实现。
      

  4.   

    谢谢lzg0001!
    目前我也正在这方面想办法,但遇到了一个新的问题。
    我们知道GIF的用RENDER来绘图的,但多张重叠的时候会造成出来的图乱七八糟。于是我想用多个HDC保存起来再将它们合成,但不知道应该怎样合成?