I .在 VC6 中使用 GdiPlus
安装三部曲:
Step1:下载 GdiPlus SDK 文件包;
链接地址1:http://www.codeguru.com/code/legacy/gdi/GDIPlus.zip
链接地址2:http://www.codersource.net/samples/mfcgdiplus.zip
Step2:安装;
(1)头(GdiPlus*.h)文件安装目录:C:\Program Files\Microsoft Visual Studio\VC98\GdiPlus;
(2)静态库(GdiPlus.lib)文件安装目录:C:\Program Files\Microsoft Visual Studio\VC98\Lib;
(3)动态库(GdiPlus.dll)文件安装目录:Copy 到 exe 文件存放目录或者直接使用系统中自带的 GdiPlus.dll;
Step3:配置开发环境下的路径
为了让 VC6 在编译的时候,能够找到 GDI+ 相关的库文件和头文件,还需要在 VC6 开发环境中进行目录配置。
(1)从 VC6 主菜单 Tools->Options... 进入设置窗口,选择 Directories 选项卡;
(2)在 Show directories for: 下拉列表中选择 Include files,在列表中增加 GdiPlus 头文件所存放的目录路径,这个路径应该与 Step2 里面(1)的路径一致;
(3)在 Show directories for: 下拉列表中选择 Library files,在列表中增加 GdiPlus.lib 所存放的目录路径,这个路径应该与 Step2 里面(2)的存放路径一致;
(4)重启 VC6,以保存修改后的配置。
I I .下面用 VC6 来写一个 GdiPlus 的 Demo 工程
Step1:新建一个名为 Demo_GdiPlus 的 MFC AppWizard(exe) SDI工程
Step2:添加头文件声明
在 StdAfx.h 中添加以下代码:
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
typedef unsigned long ULONG_PTR, *PULONG_PTR;
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment (lib, "GdiPlus.lib")
Step3:在 CDemo_GdiPlusApp 中增加成员变量 m_gdiplusToken,并在构造函数中进行初始化
class CDemo_GdiPlusApp : public CWinApp
{
private:
ULONG_PTR m_gdiplusToken;
// …… ……
};
CDemo_GdiPlusApp::CDemo_GdiPlusApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
m_gdiplusToken = NULL;
}
Step4:添加安装和卸载 GdiPlus 的代码
通过 ClassWizard 在 CDemo_GdiPlusApp 中增加成员函数
// .h 中的声明
virtual BOOL InitInstance();
virtual int ExitInstance();
// .cpp 中的实现
BOOL CDemo_GdiPlusApp::InitInstance()
{
// 加载 GdiPlus
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
// …… ……
}
int CDemo_GdiPlusApp::ExitInstance()
{
// TODO: Add your specialized code here and/or call the base class
// 卸载 GdiPlus
if (m_gdiplusToken)
Gdiplus::GdiplusShutdown(m_gdiplusToken);
return CWinApp::ExitInstance();
}
Step5:找到 CDemo_GdiPlusView::OnDraw() 函数,在里面添加一段 GdiPlus 的绘图代码
void CDemo_GdiPlusView::OnDraw(CDC* pDC)
{
CDemo_GdiPlusDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
Graphics graphics(pDC->GetSafeHdc());
// Pen can also be constructed using a brush or another pen. There is a second parameter - a width which defaults to 1.0f
Pen blue (Color(255, 0, 0, 255));
Pen red (Color(255, 255, 0, 0));
int y = 256;
for (int x = 0; x < 256; x += 5)
{
graphics.DrawLine(&blue, 0, y, x, 0);
graphics.DrawLine(&red, 256, x, y, 256);
y -= 5;
}
}