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

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

http://blog.csdn.net/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);


这样就可以任意自如的画图了,适当的排版一下就能绘画啊,保存啊,都能自由一点了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值