您的位置:首页 > 其它

初始化GDI+环境

2012-07-30 19:40 148 查看
我的开发环境为 vc.net 2003, 下面我就来说一下在此开发环境中如何加载 GDI+ 开发环境, 如果您的开发环境为 VC 6 请参考本文结尾部分。

在标准的 MFC 开发环境中 MFC 是不支持 GDI+ 开发的, 要想使用 GDI+ 需要我们手工对程序做一些修改。原理我就不想说了, 感兴趣的朋友可以自己在网上搜一下相关的资料, 这里我只说实际的操作步骤。

vc.net 2003 (vc 7.0) 包含有 Gdi+ 的头文件和库文件, 头文件位于 VS.net 2003 安装目录\Vc7\PlatformSDK\Include 中, 以 Gdiplus 开头的 .h 文件, 库文件为 VS.net 2003 安装目录\Vc7\PlatformSDK\Lib 中的 gdiplus.lib 文件, 如果您的开发环境不包含这些文件, 您可以到网上下载 gdi+ SDK 安装到您的计算机中。

确定这点后,我们开始以一个 SDI 程序为例讲解 GDI+ 环境的加载方法。

首先新建项目: Visual C++ 项目-> MFC 应用程序 -> 单文档 为了方便我们默认建立一个以 CView 为视图类的应用程序, 以上步骤大家都应当很熟悉了。在我创建的程序中应用程序类为 CMyApp , 视图类为 CMyView。

将 GDI+ 加载到程序中

第一步. 包含头文件

我们需要首先将 gdi+ 的头文件包含到我们的工程中, 这里我们可以将 #include 语句放入 atdafx.h 头文件中, 打开 atdafx.h 文件, 加入如下语句 :

#include?<gdiplus.h>

using?namespace?Gdiplus;

第二步. 为链接库输入库文件

在 类视图 的 项目图标 上单击鼠标右键, 在弹出的菜单中选择 属性 , 打开项目属性对话框。

选择 配置 为 所有配置, 设置 链接器 -> 输入 -> 附加依赖项 为 gdiplus.lib

第三步. 定义 CMyApp 类成员变量

在 CMyApp 类的头文件类定义中加入如下语句 :

ULONG_PTR?m_gdiplusToken;

第四步. 在程序启动时初始化 gdi+

在 CMyApp 类的重载函数 CMyApp::InitInstance() 中加入如下语句 :

Gdiplus::GdiplusStartupInput?gdiplusStartupInput;

Gdiplus::GdiplusStartup(&m_gdiplusToken,?&gdiplusStartupInput,?NULL);

第五步. 在程序终止时释放 gdi+

重载CMyApp 类的函数 CMyApp::ExitInstance() 并加入如下语句 :

Gdiplus::GdiplusShutdown(m_gdiplusToken);

完成上述五步, 您可以编译一下程序, 如果没有错误发生那么恭喜您, 您的 gdi + 环境已经成功地加载到了程序中, 下面您就可以开始使用 gdi+ 进行绘图了。

和使用 gdi 一样, 您可以在程序中任何可以取得设备描述表的地方使用 gdi+。这里我们选择 CMyView 类的 OnDraw 函数。

gdi+ 为我们定义了许多新的类, 各个类的说明您可以从 MSDN 中获取, 很详细。

我们在 CMyView 类的 OnDraw 函数中写入 :

?

void?CMyView::OnDraw(CDC*?pDC)

{

????Graphics?graphics(?pDC->m_hDC);

????Image?image(L"c:\\test.png");

????graphics.DrawImage(&image,?10,10);

}

Graphics graphics(pDC->m_hDC);

通过设备描述表句柄实例化一个?gdi+ Graphics 类成员

Image image(L"c:\\test.png");

创建 gdi+ Image 类成员加载一张图像文件

graphics.DrawImage(&image, 10,10);

在 x:10 y:10 的位置输出图片

Visual C++ 6.0

Visual C++ 6.0 开发环境并没有为 gdi+ 作准备 , gdi+ 的头文件和库文件并没有被包含在环境中, 需要您手工安装, SDK 您可以在 这里 下载到, 解压后将头文件和库文件分别放置于 VC 6.0 安装目录下的 Include 和 Lib 目录中。

在 VC6.0 中加载 gdi+ 同样遵循上面介绍的五步, 唯一不同的是 第一步 中我们还要加入一条语句, 也就是说我们要加入三条语句 :

?

#include?<gdiplus.h>

using?namespace?Gdiplus;

#define?ULONG_PTR?ULONG

?

原因是 VC6?中没有 ULONG_PTR 类型。 除此以外其他步骤和 VC.net 中相同
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gdi+ image mfc include 文档 c