天天看点

MFC VS2012对话框背景填图

这是使用vs 2012编写mfc对话框程序的教程,主要是关于图片处理方面的操作,这些在mfc游戏、图片处理、软件编写中是经常要用到的知识。

一.创建项目

文件-新建项目-mfc应用程序-该页面使用“基于对话框”-完成即可。

MFC VS2012对话框背景填图

注意:取消“使用unicode库”,否则在使用afxmessagebox会报错,没有一个可以转换的参数类型,要加afxmessagebox(_t(“..”))。

运行结果:

MFC VS2012对话框背景填图

二.添加背景bitmap资源

在“资源视图”中右键鼠标dialog处,选择“添加资源”。

MFC VS2012对话框背景填图

在“添加资源”对话框中选择bitmap,点击“导入”,选择工程文件res文件夹中的背景图片,它会添加一张idb_bitmap1的图片。

MFC VS2012对话框背景填图

注意:在添加的图片中最好使用的是24位的bmp格式图片,图片应该放入res文件夹中。

MFC VS2012对话框背景填图

三.编写代码

找到xxxdlg.cpp文件夹下的void cxxxdlg::onpaint()函数,在else中进行修改。

1.首先注释掉cdialog::onpaint()函数

cdialog是个对话框类,onpaint()是成员函数,是对窗口进行重画,注释掉该语句否则会调用该语句不断重画,而不会执行下面添加的代码。注释掉该语句后最小化对话框后发现控件不可见,不过移动鼠标后又能看见。

2.添加代码

else {

//注释该语句:防止重复调用重画函数

//cdialog::onpaint(); 

//添加代码对话框背景贴图

cpaintdc   dc(this);  

crect   rect;  

getclientrect(&rect);    //获取对话框长宽      

cdc   dcbmp;            

//定义并创建一个内存设备环境

dcbmp.createcompatibledc(&dc);             //创建兼容性dc

cbitmap   bmpbackground;   

bmpbackground.loadbitmap(idb_bitmap1);    //载入资源中图片

bitmap   m_bitmap;                         //图片变量               

bmpbackground.getbitmap(&m_bitmap);       //将图片载入位图中

//将位图选入临时内存设备环境

cbitmap  *pbmpold=dcbmp.selectobject(&bmpbackground);

//调用函数显示图片stretchblt显示形状可变

dc.stretchblt(0,0,rect.width(),rect.height(),&dcbmp,0,0,m_bitmap.bmwidth,m_bitmap.bmheight,srccopy);    

}

MFC VS2012对话框背景填图

四.运行结果

运行结果如下图所示:

MFC VS2012对话框背景填图

由于我是刚学习vs2012编写mfc程序,在处理显示图片中遇到了很多问题,也参考了很多很多csdn大神的博客,希望这篇博客能帮助大家。~~初学者学习,高手忽略。

我很大程度上只是转载了它的内容,自己在通过vs2012实现该功能的。(eastmount 2013-5-31-夜12点)

继续阅读