Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3274483
  • 博文数量: 346
  • 博客积分: 10189
  • 博客等级: 上将
  • 技术积分: 3125
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-05 19:46
文章分类

全部博文(346)

文章存档

2013年(35)

2011年(35)

2010年(76)

2009年(48)

2008年(152)

分类: C/C++

2009-05-14 17:00:50

下面用 VC6 来写一个 GdiPlus 的 Demo 工程

Demo_GdiPlus 运行效果图

 

Step1:新建一个名为 Demo_GdiPlus 的 MFC AppWizard(exe) 工程

操作步骤:
(1)主菜单File->New...,选择 Projects 选项卡;
(2)在工程类型列表中选中 MFC AppWizard(exe);
(3)Project name 填入 Demo_GdiPlus,按 OK 进入下一页;
(4)选择单文档(Single document)类型的程序框架,按 Finish 完成工程创建工作。


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(25500255));
 Pen red  (Color(
25525500));
 
 
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;
 }  
}


编译运行,Demo 程序完成。留住这个 Demo 程序,今后我们会利用它进行更加深入的 GdiPlus 学习。

阅读(10574) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~