简介:本文主要针对VC++.NET程序开发人员,如果使用VC++6.0,那么需要下载微软的GDIPLUS支持包(如果使用VS2003或以上版本则不需要下载GDIPLUS支持包了,因为它本身已包含了这些文件)。在微软官方网站下载时需认证Windows为正版,另外我们可从这个地址下载:http://www.codeguru.com/code/legacy/gdi/GDIPlus.zip
一个完整的GDI+支持包至少包括如下文件:
(1)头文件:gdiplus.h
(2)动态链接库的.lib文件:gdiplus.lib
(3)动态链接库的.dll文件:gdiplus.dll
少了(1)、(2)程序不能编译,少了(3)程序能以共享DLL的方式编译但是不能运行,运行时找不到.dll文件。
一、问题是什么?
对于刚刚接触GDI+的朋友来说,学习GDI+环境配置与使用方法是必需的,本文档主要介绍这两方面的内容。至于GDI+的最初入门教程可以参考pdf文档《Windows GDI+的研究与应用》,这是介绍GDI+功能与性能特点及其前身GDI的内容文章,建议在阅读本文档前先参阅。
二、解决问题的方法
1、 GDI+环境配置
(1)、在VS2003中建立一个MFC工程项目,项目名称可以为:gdiplusTest
(2)、在文档stdafx.h中加入代码:
//导入gdiplus库文件,一般代码放在代码#pragma once的下一行
#pragma once
#pragma comment(lib,"gdiplus.lib")
//导入gdiplus头文件,一般放在头文件存放处,注意位置要存放正确。
//下面这句代码已存在,无需COPY,这里是为了说明再下面代码的存在位置。
#include <afxcmn.h> //Windows 公共控件的 MFC
#include <gdiplus.h> // 导入gdiplus头文件
using namespace Gdiplus; // 使用Gdiplus命名空间,避免命名歧议
(3)、在文档gdiplusTest.h 即 CApp类头文件定义
ULONG_PTR m_gdiplusToken;
public:
virtual int ExitInstance();//在CApp类重载ExitInstance()函数
(4)、在文档gdiplusTest.cpp即 CApp类源文件中
在函数InitInstance()中添加如下代码:
//源代码中已经存在这句代码,这里是为了说明下面代码的存放位置
CWinApp::InitInstance();
//初始化GDI+对象
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&m_gdiplusToken,&gdiplusStartupInput,NULL);
在函数ExitInstance()中添加如下代码:
//关闭与释放GDI+资源
Gdiplus::GdiplusShutdown(m_gdiplusToken);
return CWinApp::ExitInstance();
2、 GDI+初级使用方法(画矩形)
前面的工作都是为了能够用GDI+画图做准备,下面给出一个用GDI+画矩形的简单例子,初步了解如何使用GDI+进行画图。
在gdiplusTestView.cpp文件,即CView类中
在函数OnDraw(CDC* pDC)中加入代码如下:(在CView类其他函数中下面代码一样有效)
//以下两行代码可以用一行代码 Graphics graphics(pDC->m_hDC); 代替
//之所以用下面两行代码是为了更具有通用性,它在CView类所有函数里都能使用
CClientDC dc(this); //获得客户区域dc
Graphics graphics(dc); //GDI+绑定dc,这样就能使用变量graphics画图啦
//GetClientRect(&lpRect); //RECT lpRect;//获得客户区域
Pen pen(Color::Red,1.0f);//设置红色画笔,笔的宽度的1.0
int startX = 0; //矩形左上角顶点X坐标
int startY = 0; //矩形左上角顶点Y坐标
int width = 100; //矩形的宽
int height = 200; //矩形的高
graphics.DrawRectangle(&pen,startX,startY,width,height);//画矩形
三、问题的深入学习
要想进一步学习GDI+技术,这些知识是远远不够的,应该找系统的教程与资料来进一步学习,下面介绍二个很好的学习网站,主要是讲解VC++.NET与GDI+技术结合的入门与提高。
网站一:Windows GDI和GDI+编程实例剖析
http://dev.yesky.com/255/2190255.shtml
网站二:Visual C .NET与 GDI+ 编程基础
http://www.2ed.cn/Article-156-23415.shtml
四、总结问题
学习与总结是个永恒的话题,让我们共同学习,共享经验,共创未来。