1. MFC Dialog工程加载GDI+方法
说明:VS 本身带有GDI+的所有库函数,所以不用像在VC++6.0里那样将GDI+的头文件和lib文件手工加入到工程中。
具体修改方法如下:
(1) stdafx.h 文件中添加代码:
#include //将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
#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+显示图像的方法,在相关的 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()); //在客户区域中绘制图像