VC加载初始化GDI+方法

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+的配置.

 在单文档工程中利用 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()); //在客户区域中绘制图像  



你可能感兴趣的:(VC/MFC)