必威体育Betway必威体育官网
当前位置:首页 > IT技术

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

时间:2019-07-30 21:40:00来源:IT技术作者:seo实验室小编阅读:62次「手机版」
 

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

相关阅读

“没有找到mfc100u.dll”的解决方法

现在需要安装 MindManager 2016 思维导图软件时,打开软件提示找不到 mfc100u.dll,无法执行程序。之前一直好好的,现在换电脑了安装

MFC隐藏进程自身(任务管理器不可见,wSysCheck等工具可见

MFC隐藏进程只要把cpp和h加入工程,include就可以了。 代码地址: //------------------HideProcess.h-------------------- //

VC++ MFC中CString类完美总结(整理)

CString 是编程中一种非常有用的数据类型,它是MFC中的一个类,很大程度上简化了MFC中的许多字符串的操作。CString位于头文件afx.h中

MFC中UpdateData(FALSE)与UpdateData(TRUE)的区别

UpdateData(FALSE):将程序中改变的变量的值更新至控件中去; UpdateData(TRUE):将控件中输入的值更新到变量中。

MFC FillSolidRect SetBKMode绘图

在MFC 中,有时候需要填充背景色,或者叫着填充一个矩形的颜色,这个时候可以使用2种方法:FillRect和FillSolidRect. FillRect使用的是一

分享到:

栏目导航

推荐阅读

热门阅读