前言
前面提及到两种方法可以设置MFC背景图片,操作由简到难,当然了他们的适用情况及功能性也是由简到繁的,这次使用的方法基本能满足任何功能需求,使用GDI+加载的背景图片可随窗口大小缩放
添加头文件
这里添加头文件要注意的是,之前的几种方法,更改的设置大多是窗口文件本身,但本次使用GDI+需要添加头文件的地方及相应操作大多在项目文件中,例如:
这是我的项目文件目录,设置界面背景Dlg.h和设置界面背景Dlg.cpp是我的主窗口文件,但其实这里需要添加头文件的地方则是设置界面背景.h,在该文件中添加
#include <gdiplus.h>
#pragma comment(lib,"gdiplus.lib")
using namespace Gdiplus;
且在下面类的定义中添加成员变量
// 重写
public:
virtual BOOL InitInstance();
ULONG_PTR m_uGdiplusToken;
修改InitInstance()
在设置界面背景.cpp中找到InitInstance()并在 CWinApp::InitInstance();语句之前添加
GdiplusStartupInput m_GdiplusStarupInput;
GdiplusStartup(&m_uGdiplusToken, &m_GdiplusStarupInput, NULL);
添加完应该是这样
修改OnPaint()
回到你要设置背景图片的窗口类cpp中,找到OnPaint()函数,在if选择结构的else分支中添加
CDC *pDC;
pDC =GetDC();
CRect rect;
GetClientRect(&rect); //获取客户区大小
Graphics graphics( pDC->m_hDC);
Image image(_T("res\\圣诞.bmp"), FALSE);
graphics.DrawImage(&image, 0, 0, rect.right, rect.bottom); //绘制背景
至此本次设置窗口背景完成
效果
说明:为了展示该图片可随窗口大小变化这里我让窗口最大化,可以看到图片的确随窗口变化
补充
我的编译环境为vs2005,本身支持
#include <gdiplus.h>
#pragma comment(lib,"gdiplus.lib")
如果你的编译器不支持gdiplus.h和gdiplus.lib则需要下载并添加