如何在MFC里显示png图片或背景透明的bmp图片
我最近在用MFC做一个Listview界面,里面要求有几组状态灯。开始我就新建一个bmp图片然后画了几个不同颜色的圆,但是感觉很不好看,而且bmp的背景和listview的背景不一样。在网上找了些漂亮的图片都是png格式的,不知道怎么显示,转化为bmp文件背景也不是透明。我是在一个CStatic上面显示位图的,是不是CStatic不能显示png图片啊。
这两天在网上看了几个方法,有说用掩码与或之类把bmp位图变透明的,但是没看太明白。。还有说VS08里有一个Cpng。。类了,可以直接用,但是试了下都没成功,可能没理解太透吧。哪位能较详细说明下或者给个别的方法满足这个要求,万分感谢~
下面是我工程里涉及到图片显示部分的代码:
HBITMAP m_bmp;
m_bmp = (HBITMAP)LoadImage(AfxGetInstanceHandl(),"data\\green.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION|LR_LOADMAP3DCOLORS);//加载bmp
CStatic *m_pic;//这是显示图片的CStatic
CImageList m_imlNull;//这个还不太清楚,我在初始化listview的时候是象下面这么写的
m_imlNull.Create(22, 22, ILC_COLORDDB|ILC_MASK, 2, 30);
theCtrl.SetImageList(&m_imlNull, LVSIL_SMALL);
然后就是给静态文本框设置图片以及放到正确的行列上:
m_pic[no].SetBitmap(m_bmp);
m_pic[no].MoveWindow(rcCtrl);
m_pic[no].ShowWindow(SW_SHOW);
研究好久都没结果,怎么使得列表项的图片背景透明或者直接显示png图片啊。。。哪位能帮助一下,谢谢~