今天正好试了一下这个方法,感觉很好。记录一下。
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);