MFC VS2012对话框背景填图

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

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

注意:取消“使用Unicode库”,否则在使用AfxMessageBox会报错,没有一个可以转换的参数类型,要加AfxMessageBox(_T(“..”))。
运行结果:

二.添加背景Bitmap资源
在“资源视图”中右键鼠标Dialog处,选择“添加资源”。

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

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

三.编写代码
找到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);    
}



四.运行结果
运行结果如下图所示:

由于我是刚学习VS2012编写MFC程序,在处理显示图片中遇到了很多问题,也参考了很多很多CSDN大神的博客,希望这篇博客能帮助大家。~~初学者学习,高手忽略。
其中主要感谢y30369的CSDN一篇使用VC++ MFC的博客,详细网址如下:
 http://blog.csdn.net/y30369/article/details/6467468
我很大程度上只是转载了它的内容,自己在通过VS2012实现该功能的。(Eastmount 2013-5-31-夜12点)

时间: 2024-08-23 05:46:43

MFC VS2012对话框背景填图的相关文章

MFC 基础知识:对话框背景添加图片和按钮Button添加图片

        很长时间没有接触MFC相关的知识了,我大概是在大二时候学习的MFC相关知识及图像处理,现在由于要帮个朋友完成个基于C++的程序,所以又回顾了下相关知识.的确,任何知识一段时间过后都比较容易忘记,但回顾起来还是很有印象的.        这篇文章主要是回顾以前的MFC基础知识,给对话框添加背景图片和给按钮button添加背景图片:希望此篇基础性文章对大家有所帮助!同时为下次做MFC相关知识提供点此时所想所感吧.内容比较简单,高手飘过~ 一. 对话框背景添加图片         首先

绘图-MFC界面新手提问:对话框背景图片和图片控件 的速度问题

问题描述 MFC界面新手提问:对话框背景图片和图片控件 的速度问题 新手美工,正在做前台,想知道在做一个全部由自绘和贴图完成的MFC对话框界面的时候,是直接用大图做背景图片好,还是将图片裁开成小图一个个用图片控件好? 在速度或者其它方面有什么影响吗?真心求教,膜拜大神们!!! 解决方案 关键看你这些图片需要不需要变化,如果不需要变化,还是整个一个背景好,比较简单.2d绘图对于现在级别的显卡,根本没有性能的差异. 解决方案二: 控件越多越慢.但是也要看你的图有多大(比如几M也不行).MFC(第一代

MFC中改变对话框背景的几个消息函数OnEraseBkgnd、 OnPaint、 OnCtlColor的调用顺序

设置对话框背景颜色及背景图片可在OnCtlColor(),OnEraseBkgnd(),OnPaint()里设置,对话框初始化完毕,显示时调用OnSize()->OnEraseBkgnd(),->OnPaint()->OnCtlColor(), 若想改变对话框大小,比如全屏显示ShowWindow(SW_SHOWMAXIMIZED);UpdateWindow(); 其中 ShowWindow会调用OnSize()->OnEraseBkgnd(),         UpdateWin

VC/MFC如何设置对话框背景颜色

VC/MFC如何设置对话框背景颜色 2007-06-19 19:57 1. 重载OnCtlColor    (CDC*    pDC,    CWnd*    pWnd,    UINT    nCtlColor),即WM_CTLCOLOR消息.      ----    ①在CExampleDlgDlg的头文件中,添加一CBrush的成员变量:        class    CExampleDlgDlg    :    public    CDialog      {...      pro

背景图片-MFC中对话框中图片适应窗口的问题

问题描述 MFC中对话框中图片适应窗口的问题 我自己建的窗口,当从文件加载背景图片时消失在对话框中的图片太大没有显示完全?这个该如何解决呢!? 解决方案 什么意思,能说清除一点吗

mfc-基于MFC的对话框绘制波形

问题描述 基于MFC的对话框绘制波形 现有一个txt的文本文件,里面存放着16进制的数据,MFC怎么获取这个数据并绘制出动态的波形 解决方案 MFC绘制有背景图像的对话框 解决方案二: http://download.csdn.net/download/tianyu524/1110247 解决方案三: CFile类打开读出文件,CDC类绘制窗口.

vc6中MFC基本对话框形式 怎么添加png图片?

问题描述 vc6中MFC基本对话框形式 怎么添加png图片? vc6中MFC基本对话框形式 怎么添加png图片? 发个源码过来就行了 谢谢 解决方案 源码没有,可以用GDI+库来帮助你添加png图片,搜索下有很多使用GDI+为MFC添加png图片例子的博文. 解决方案二: CXImage第三方库支持PNG 解决方案三: 用CImage类加载,调用他的Darw方法来贴图

删除黑线-关于消除CPen画的黑线 有背景贴图

问题描述 关于消除CPen画的黑线 有背景贴图 在MFC窗口(有背景贴图)用pen画了一个黑色矩形框,请问有办法删除黑线吗,前提是不删除背景贴图 解决方案 指定 CPen 的属性:nPenStyle 为PS_NULL画笔不能画图 解决方案二: 绘制以前,把相关的区域的位图拷贝一份. 另外就是橡皮筋 http://blog.163.com/xhyzdai@126/blog/static/732533112011111711474685/http://blog.csdn.net/shuimu1234

VC 对话框背景颜色、控件颜色

系统环境:Windows 7软件环境:Visual C++ 2008 SP1本次目的:为对话框设置背景颜色.控件颜色       既然MFC对话框不好开发,那么现在我们来开始美化我们的对话框.为对话框设置背景颜色.控件颜色等等.   对话框背景颜色:   网上流传有四种方法(可能还不止),在VC++2008SP1测试后,发现只有三种可以使用了,其中第一种被废弃了.以下是四种方法: 方法一 (失效):调用CWinApp类的成员函数SetDialogBkColor来实现.       其中函数的第一