其实位图透明下去原来很简单,用TransparentBlt就可以了

来源:互联网 发布:乐亭阿里巴巴农村淘宝 编辑:程序博客网 时间:2024/04/30 00:29

今天正好试了一下这个方法,感觉很好。记录一下。

http://blog.csdn.net/luoyikun/article/details/48597383

这篇文章里面有句话形容的很好:当图片不是透明背景的时候,使用这个方法对某种颜色进行过滤(已达到实现透明的效果,不过有时候效果也会有点差强人意)


使用这个方法的时候的按照上面的文章中配置一下,在vc6++中没有找到相关配置地方。换了一种方法:

#pragma comment(lib,"Msimg32.lib")


过滤颜色设置为白色时,效果图如下:


哇,nice,虽然然并卵,但还是很开心。纠结了很久。

m_PrimaryMemDC->SelectObject(m_bitmap1);//将一个位图选入内存dcm_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);


这样就可以任意自如的画图了,适当的排版一下就能绘画啊,保存啊,都能自由一点了。
阅读全文
0 0
原创粉丝点击