CImage和Gif透明的问题

fool_leave 2004-08-30 07:24:36
我用CImage来显示Gif图片,图片的背景是透明的。用TransparentBlt来绘制应该怎么设置crTransparent参数?怎么实现绘制后的透明背景效果?
...全文
528 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fool_leave 2004-09-03
  • 打赏
  • 举报
回复
不一定,有些不是.
试过一个gif,我把左上角(0,0)的颜色提取出来设置为透明色,结果该透明的没透明,不该透明的透明了.
菜牛 2004-09-03
  • 打赏
  • 举报
回复
好像GIF左上角一点是透明色,不肯定。
fool_leave 2004-09-03
  • 打赏
  • 举报
回复
up
fool_leave 2004-08-31
  • 打赏
  • 举报
回复
这个方法我也大致会用,可是我不知道透明色怎么设置。你的方法里把蓝色设置为了透明色。
用IE打开一个背景透明的GIF图片,显示出来的图像也是背景透明的,而对于IE来说它不知道这个gif到底应该把什么颜色设置为透明色。我的程序怎么做到这一点呢?
fool_leave 2004-08-31
  • 打赏
  • 举报
回复
up
名牌大灰狼 2004-08-30
  • 打赏
  • 举报
回复
TransparentBlt,也可以通过自己的代码实现类似TransparentBlt的功能,实现过程也有两种形式,一种是事先做一张掩码位图,另一种是动态生成掩码位图。本文将介绍动态生成掩码位图绘制具有透明区域位图的方法。

一、TransparentBlt 函数的使用

TransparentBlt 函数在Windows98/Windows2000以上版本运行,系统中需要包含 Msimg32.dll,使用时可以链接 Msimg32.lib。
Windows98下的TransparentBlt会产生资源泄漏,所以不建议在WIN98下使用该函数。
TransparentBlt函数原型如下:

BOOL TransparentBlt(

HDC hdcDest, // 目标DC

int nXOriginDest, // 目标X偏移

int nYOriginDest, // 目标Y偏移

int nWidthDest, // 目标宽度

int hHeightDest, // 目标高度

HDC hdcSrc, // 源DC

int 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);



15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧