1. MFC Dialog工程加载GDI+方法
说明:VS 本身带有GDI+的所有库函数,所以不用像在VC++6.0里那样将GDI+的头文件和lib文件手工加入到工程中。
具体修改方法如下:
(1) stdafx.h 文件中添加代码:
#include <gdiplus.h> //将GDI+头文件加入到工程中 #pragma comment(lib, "gdiplus.lib") //将GDI+的lib文件加入到工程中 using namespace Gdiplus; //使用GDI+的命名空间
(2) 假设工程名叫Menu,则在自动生成的Menu.h文件中添加成员变量:
protected: //GdiplusStartupInput m_gdiplusStartupInput; ULONG_PTR m_gdiplusToken; public: //重载ExitInstance virtual int ExitInstance();
(3)在Menu.cpp的函数BOOL CMenuApp::InitInstance()中添加:
GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);(4)在Menu.cpp中添加重载函数ExitInstance()
int CMenuApp::ExitInstance() { // TODO: Add your specialized code here and/or call the base class GdiplusShutdown(m_gdiplusToken); //关闭GDI + return CWinApp::ExitInstance(); }
2. WIN32工程加载GDI+
(1)加载GDI头文件和库文件
#include <gdiplus.h> #pragma comment(lib, "gdiplus.lib") using namespace Gdiplus;// 另外取消在 stdafx.h 中的 WIN32_LEAN_AND_MEAN的定义(否则将有N个错,具体原因不是太清楚)
//#define WIN32_LEAN_AND_MEAN // 从 Windows 头中排除极少使用的资料
(2)GDI初始化和关闭
// 在int _tWinMain中添加如下代码
// Initialize GDI+. GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; GdiplusStartup(&gdiplusToken, gdiplusStartupInput, NULL); //。。。。。。。。。 // 程序结束时关掉GDI+ GdiplusShutdown(gdiplusToken);
3. 单文档配置GDI方法
①新建一个单文档工程,为相关的 App 类添加两个成员变量:
GdiplusStartupInput m_Gdistart;
ULONG_PTR m_GdiplusToken;
②在其类视图中,在相关的类 App 中的函数 InitInstance()添加:
GdiplusStartup(&m_GdiplusToken,& m_Gdistart,NULL);
③在相关的类 App 中的函数 ExitInstance()添加:
GdiplusShutdown(m_GdiplusToken);
④在“项目”->“属性”->“配置属性” ->“配置:所有配置”->“链接器”
->“输入”->“附加依赖项”中添加: gdiplus.lib
⑤在需要调用 GDI+中的函数的页面上方 或者 在头文件 stdafx.h 中添加:
#include "gdiplus.h"
using namespace Gdiplus;
至此便完成了 GDI+的配置. 在单文档工程中利用 GDI+显示图像的方法,在相关的 View 类中的函数 OnDraw(CDC* pDC)中,添加:
Image image(L"lena.jpg"); //载入指定路径的图像文件,jpg 或 bmp 格式的都可以 路径前面的 L 不能少 CRect rect; GetClientRect(&rect); //获取客户区域的信息 Graphics graph(pDC->GetSafeHdc());//pDC 就是函数 OnDraw()中的参数 graph.DrawImage(&image,0,0,rect.Width(),rect.Height()); //在客户区域中绘制图像