如何使位图透明,不使用MFC,使用PICTURE控件的。重分感谢!!!

zhxhaixing 2005-10-09 01:56:06
我使用VC导入一张位置(有背景),然后用VC的PICTURE控件显示,背景不透明,请问大家如何处理?记住不使用MFC的。谢谢大家!!!
...全文
388 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
MyGrid 2005-12-10
  • 打赏
  • 举报
回复
作个记号,学习。。。
huwei001982 2005-10-10
  • 打赏
  • 举报
回复
晕, 别人已经解释的非常详细了!
goodboyws 2005-10-10
  • 打赏
  • 举报
回复
晕,你在资源编辑器里Picture好歹也要放个地方吧,效果是一样的。用Picture也解决不了分辨率的问题
zhxhaixing 2005-10-09
  • 打赏
  • 举报
回复
怎么计算啊?用PICTURE根本不用管位置啊
goodboyws 2005-10-09
  • 打赏
  • 举报
回复
你自己可以计算位置,跟你用Picture是一样的
zhxhaixing 2005-10-09
  • 打赏
  • 举报
回复
效果是出来了,刚才我的正好有m_hImageList这个变量所以没报错。
不过这样直接指定坐标画可能存在这样的问题:当机器分辨器不一样的时候,会不会出现位置不好看的情况(因为在我机器上画出来刚好位置合适,换台不同分辨器的机子会不会出现位置不好看的情况)
goodboyws 2005-10-09
  • 打赏
  • 举报
回复
ImageList_Add(hImageList, hBitmap, NULL);换为
ImageList_AddMasked(hImageList, hBitmap, RGB(0, 128, 128));//这是背景颜色
假定你的背景色是RGB(0, 128, 128);

不好意思,注意力不集中,总是敲错
原先是ImageList_AddMasked(m_hImageList, hBitmap, RGB(0, 128, 128));
zhxhaixing 2005-10-09
  • 打赏
  • 举报
回复
PAINTSTRUCT ps;
HDC hdc = BeginPaint(&ps);
HBITMAP hBitmap= LoadBitmap(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDB_BITMAP1));
BITMAP bm;
GetObject(hBitmap, sizeof(bm), &bm);
SIZE size;
size.cx = bm.bmWidth;
size.cy = bm.bmHeight;
HIMAGELIST hImageList = ImageList_Create(size.cx, size.cy, ILC_MASK | ILC_COLOR8, 0, 1);
ImageList_Add(hImageList, hBitmap, NULL);
ImageList_AddMasked(m_hImageList, hBitmap, RGB(0, 128, 128));//这是背景颜色
ImageList_Draw(hImageList, 0, hdc, 8, 8, ILD_TRANSPARENT);
EndPaint(&ps);
return 0;
这是我搬过来的代码,但是ImageList_Add(hImageList, hBitmap, NULL);去掉
则不管透明色设多少,图片都看不到,加上这句就行了。但是背景颜色没去掉。
goodboyws 2005-10-09
  • 打赏
  • 举报
回复
HBITMAP hBitmap= LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
BITMAP bm;
GetObject(hBitmap, sizeof(bm), &bm);
SIZE size;
size.cx = bm.bmWidth;
size.cy = bm.bmHeight;
zhxhaixing 2005-10-09
  • 打赏
  • 举报
回复
就是图片背景透明,
BITMAP bm;
GetObject((HBITMAP)myBitmap.GetSafeHandle(), sizeof(bm), &bm);
SIZE size;
我是在ATL工程中用的,这些有错误
goodboyws 2005-10-09
  • 打赏
  • 举报
回复
什么叫背景透明
zhxhaixing 2005-10-09
  • 打赏
  • 举报
回复
goodboyws(深夜不眠者) ,你没有去除背景吧,背景要透明的
goodboyws 2005-10-09
  • 打赏
  • 举报
回复
ImageList_Add(hImageList, hBitmap, NULL);去掉
goodboyws 2005-10-09
  • 打赏
  • 举报
回复
呵呵,是我的代码有问题
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
HBITMAP hBitmap= LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
BITMAP bm;
GetObject((HBITMAP)myBitmap.GetSafeHandle(), sizeof(bm), &bm);
SIZE size;
size.cx = bm.bmWidth;
size.cy = bm.bmHeight;
HIMAGELIST hImageList = ImageList_Create(size.cx, size.cy, ILC_MASK | ILC_COLOR24, 0, 1);
ImageList_Add(hImageList, hBitmap, NULL);
ImageList_AddMasked(m_hImageList, hBitmap, RGB(0, 128, 128));//这是背景颜色
ImageList_Draw(hImageList, 0, hdc, 20, 20, ILD_TRANSPARENT);
......
EndPaint(hdc, &ps);

zhxhaixing 2005-10-09
  • 打赏
  • 举报
回复
100大洋全给你啦,你在哪里指定透明色的?
goodboyws 2005-10-09
  • 打赏
  • 举报
回复
晕,你给我多少钱啊
zhxhaixing 2005-10-09
  • 打赏
  • 举报
回复
能不能加点注释啊?看不太懂啊。
goodboyws 2005-10-09
  • 打赏
  • 举报
回复
一样
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
HBITMAP hBitmap= LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
BITMAP bm;
GetObject((HBITMAP)myBitmap.GetSafeHandle(), sizeof(bm), &bm);
SIZE size;
size.cx = bm.bmWidth;
size.cy = bm.bmHeight;
HIMAGELIST hImageList = ImageList_Create(size.cx, size.cy, ILC_MASK | ILC_COLOR24, 0, 1);
ImageList_Add(hImageList, hBitmap, NULL);
ImageList_Draw(hImageList, 0, hdc, 20, 20, ILD_TRANSPARENT);
......
EndPaint(hdc, &ps);

zhxhaixing 2005-10-09
  • 打赏
  • 举报
回复
我不能使用MFC的啊。
goodboyws 2005-10-09
  • 打赏
  • 举报
回复
你可以直接在对话框的OnPaint里画,
用ImageList

CPaintDC dc(this);
CBitmap myBitmap;
myBitmap.LoadBitmap(IDB_BITMAP1);
BITMAP bm;
GetObject((HBITMAP)myBitmap.GetSafeHandle(), sizeof(bm), &bm);
SIZE size;
size.cx = bm.bmWidth;
size.cy = bm.bmHeight;
CImageList imageList;
imageList.Create(size.cx, size.cy, ILC_MASK | ILC_COLOR24, 0, 1);//ILC_COLOR24指24位位图
imageList.Add(&bmGamePos, RGB(0, 128, 128));//这是背景颜色
CPoint pt(20, 20);
imageList.Draw(&dc, 0, pt, ILD_TRANSPARENT);
加载更多回复(2)

15,980

社区成员

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

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