我用CImage来显示Gif图片,图片的背景是透明的。用TransparentBlt来绘制应该怎么设置crTransparent参数?怎么实现绘制后的透明背景效果?

解决方案 »

  1.   

    TransparentBlt,也可以通过自己的代码实现类似TransparentBlt的功能,实现过程也有两种形式,一种是事先做一张掩码位图,另一种是动态生成掩码位图。本文将介绍动态生成掩码位图绘制具有透明区域位图的方法。一、TransparentBlt 函数的使用 TransparentBlt 函数在Windows98/Windows2000以上版本运行,系统中需要包含 Msimg32.dll,使用时可以链接 Msimg32.lib。
    Windows98下的TransparentBlt会产生资源泄漏,所以不建议在WIN98下使用该函数。
    TransparentBlt函数原型如下: BOOL TransparentBlt(HDC hdcDest,      // 目标DCint nXOriginDest,   // 目标X偏移int nYOriginDest,   // 目标Y偏移int nWidthDest,     // 目标宽度int hHeightDest,    // 目标高度HDC hdcSrc,         // 源DCint nXOriginSrc,    // 源X起点int nYOriginSrc,    // 源Y起点int nWidthSrc,      // 源宽度int nHeightSrc,     // 源高度UINT crTransparent  // 透明色,COLORREF类型);使用示例: CBitmap FootballBMP;FootballBMP.LoadBitmap(IDB_FOOTBALLBMP);CDC ImageDC;ImageDC.CreateCompatibleDC(pDC);CBitmap *pOldImageBMP = ImageDC.SelectObject(&FootballBMP);TransparentBlt(pDC->m_hDC, 0, 0, 218, 199, ImageDC.m_hDC, 0, 0, 218, 199, RGB(0,0,0xff));ImageDC.SelectObject(pOldImageBMP);
      

  2.   

    这个方法我也大致会用,可是我不知道透明色怎么设置。你的方法里把蓝色设置为了透明色。
    用IE打开一个背景透明的GIF图片,显示出来的图像也是背景透明的,而对于IE来说它不知道这个gif到底应该把什么颜色设置为透明色。我的程序怎么做到这一点呢?
      

  3.   

    好像GIF左上角一点是透明色,不肯定。
      

  4.   

    不一定,有些不是.
    试过一个gif,我把左上角(0,0)的颜色提取出来设置为透明色,结果该透明的没透明,不该透明的透明了.