初始化GDI+环境

我的开发环境为 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 中相同
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值