MFC基于对话框如何添加位图并使位图背景透明(TransparentBlt函数)

MFC中比较重要的一部分学习内容即是绘图,而绘图时我们会发现如果想插入一张图片而又不想要图片的背景,或者已经把图片的背景用Ps去掉了,但是在MFC窗口中显示图片的时候又有了白色的背景,这个时候就可以使用TransparentBlt函数(通常支持位图)来实现将图片背景变透明。
一、添加位图。
在资源视图中,右击 项目.rc —>添加资源 —>Bitmap —>导入是已有的图片,新建是自己绘制。—>选择需要添加的图片
添加完成后,资源视图Bitmap中看到的图片的名字就是图片的ID,注意确保Resource.h文件中已有了图片的声明。

二、TransparentBlt函数的使用
TransparentBlt 函数在Windows98/Windows2000以上版本运行,系统中需要包含 Msimg32.dll,使用时可以链接 Msimg32.lib。
Windows98下的TransparentBlt会产生资源泄漏,所以不建议在WIN98下使用该函数。
TransparentBlt函数原型如下:

BOOL TransparentBlt(
HDC hdcDest, // 目标DC
int nXOriginDest, // 目标X偏移
int nYOriginDest, // 目标Y偏移
int nWidthDest, // 目标宽度
int hHeightDest, // 目标高度
HDC hdcSrc, // 源DC
int nXOriginSrc, // 源X起点
int nYOriginSrc, // 源Y起点
int nWidthSrc, // 源宽度,必须小于或等于位图的实际宽度
int nHeightSrc, // 源高度,必须小于或等于位图的实际高度
UINT crTransparent // 透明色,COLORREF类型

使用示例:

CPaintDC dc(this);//创建一个dc
CBitmap ObcBMP,*pOldImageBMP;
BITMAP bmp;
ObcBMP.LoadBitmap(IDB_BITMAP1);//从资源加载位图(括号中即为位图的ID)
ObcBMP.GetObject(sizeof BITMAP,&bmp);//获取位图的宽高等信息
CDC ImageDC;
ImageDC.CreateCompatibleDC(&dc);
pOldImageBMP = ImageDC.SelectObject(&ObcBMP);//将之前对象保存
        TransparentBlt(dc.m_hDC,0,0,30,48,ImageDC.m_hDC,0,0,30,48,RGB(255,255,255));//设置白色为透明色
ImageDC.SelectObject(pOldImageBMP);

Transparent的最后一个参数为RGB(),若设置白色背景透明则参数为RGB(255,255,255), 若设置黑色背景透明则参数为RGB(0,0,0)

本文就简单介绍TransparentBlt函数的用法,如果想深入了解可以查阅我的参考文章:
http://blog.csdn.net/piaopiaopiaopiaopiao/article/details/41490929
http://www.360doc.com/content/14/0213/18/15753510_352255712.shtml
http://www.cnblogs.com/Caiqinghua/archive/2009/02/16/1391945.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值