今天正好试了一下这个方法,感觉很好。记录一下。
http://blog.youkuaiyun.com/luoyikun/article/details/48597383
这篇文章里面有句话形容的很好:当图片不是透明背景的时候,使用这个方法对某种颜色进行过滤(已达到实现透明的效果,不过有时候效果也会有点差强人意)
使用这个方法的时候的按照上面的文章中配置一下,在vc6++中没有找到相关配置地方。换了一种方法:
#pragma comment(lib,"Msimg32.lib")
过滤颜色设置为白色时,效果图如下:
哇,nice,虽然然并卵,但还是很开心。纠结了很久。
m_PrimaryMemDC->SelectObject(m_bitmap1);//将一个位图选入内存dc
m_TempMemDC->SelectObject(m_bitmap2);
// m_TempMemDC->SelectObject(m_bitmap2);
// m_TempMemDC->SetBkColor(RGB(0,0,0));
BITMAP bitmap1,bitmap2;
m_bitmap1->GetBitmap(&bitmap1);
//m_bitmap2->GetBitmap(&bitmap2);
HDC hdc1,hdc2;
hdc1 = m_PrimaryMemDC->GetSafeHdc();
hdc2 = m_TempMemDC->GetSafeHdc();
TransparentBlt(hdc2,0,0,bitmap1.bmWidth,bitmap1.bmHeight,hdc1,0,0,bitmap1.bmWidth,bitmap1.bmHeight,RGB(255,0,0)); //将bitmap1复制到bitmap2上并过滤红色 //对于这句,他不是CDC的成员函数,只能通过HDC来操作,记得白天是直接通过CDC指针直接操作的(或许记错了)
//显示
pDC->BitBlt(600,0,100,100,m_TempMemDC,0,0,SRCCOPY);
本文介绍了一种在VC++环境下实现图片特定颜色透明化的处理方法。通过使用`TransparentBlt`函数,并指定需要过滤的颜色(如红色),可以有效地使图片中该颜色的部分变为透明。文中还提供了具体的代码实例,展示了如何选择位图对象、获取位图信息及完成透明化处理。
4828

被折叠的 条评论
为什么被折叠?



