目前微软的.Net框架正进一步发展,1.1版本即将发布,伴随而来是增加了诸如命名空间(Namespace)、Windows Form、GDI+和CLR等新概念、新机制。本文就来向大家介绍一下.Net框架下GDI+编程的一些基本知识。
GDI+是从GDI演化而来的,但是在Visual Studio的以前版本中使用GDI是相当复杂的,而且工作量巨大。现在在GDI+中,微软已经帮我们解决了许多问题,因而使用GDI+编程将变得非常容易。
GDI+包含在System.Drawing.Dll集合中,所有的GDI+类包含在System.Drawing,System.Text,System.Printing,System.Internal,System.Imaging,System.Drawing2D以及System.Design等命名空间中。
本文先向大家介绍一下图形类(Graphics Class)。然后,会向大家介绍一些最常用的类和结构,包括画笔(Pen)、画刷(Brush)、字体(Font)、颜色(Color)等类或结构。文章的最后还给出了一些很有用的用.Net框架的原生语言C#实现的例子。
图形类(Graphics Class)
我们用图形类的对象来表示GDI+的图形表面。为了使用GDI+,我们必须先建立一个图形类对象。通常,我们可以从Paint这个事件获得图形类对象的一个引用或是通过重载方法OnPaint来取得该对象。具体方法如下:
或是:
建立好图形类对象后,我们就可以调用以下一些方法来完成基本的画图功能了。
图形对象
建立图形对象后,我们就可以用它来画线、填充图形以及画文本等等。以下是一些主要的图形对象:
画刷类(Brush Class)
画刷类是一个抽象基类,我们不能直接将它实例化。我们必须实例化它的子类对象,它的子类包括:SolidBrush,TextureBrush,RectangleGradientBrush以及LinearGradientBrush。
举例如下:
SolidBrush类定义一把由单色构成的画刷。这个画刷可以用来填充像矩形、椭圆形、馅饼形、多边形以及路径这样的图形区域。
TextureBrush类定义一把可以将一定区域用图象来填充的画刷。
LinearGradiantBrush类可以定义一把两种颜色间变化的画刷,也可以定义一把多种颜色间变化的画刷。
画笔类(Pen Class)
画笔类用来画具有特定宽度和风格的直线和曲线。我们必须先用画笔类的构造函数初始化一个画笔对象,在实例化的时候还可以用到颜色和画刷。
用特定的颜色初始化新的画笔对象:
public Pen(Color);
用特定的画刷初始化新的画笔对象:
public Pen(Brush);
用特定的画刷以及宽度初始化新的画笔对象:
public Pen(Brush, float);
用特定的颜色以及宽度初始化新的画笔对象:
public Pen(Color, float);
举例如下:
或是:
以下是画笔类的一些最常用的属性:
字体类(Font Class)
字体类决定了特定文本的字体格式,比如:字体类型、大小以及风格。我们用字体类的构造函数建立一种字体。
用特定的属性初始化新的字体对象:
用特定的已存在的字体和字体风格初始化新的字体对象:
以下是一些字体风格:
举例如下:
颜色结构(Color Structure)
一个颜色结构代表一种ARGB格式的颜色。以下是它的ARGB属性:
A:获得颜色的Alpha成分值
B:获得颜色的蓝色成分值
G:获得颜色的绿色成分值
R:获得颜色的红色成分值
下面是如何使用颜色结构的例子:
到现在,我相信大家已经对.Net框架下的GDI+有了大致的了解。为了让大家更直观的理解有关GDI+的编程知识,我特意为大家准备了以下一些基本但又很有用例子。通过对这些例子的学习,我相信大家对.Net框架下的GDI+编程会有更深刻的理解。同时要说明的是,下面的例子是用C#语言实现的,如果你是一位VB.net的爱好者,不妨通过适当修改代码来实现同样的功能。
画一个矩形:
图示如下:

画一个椭圆:
图示如下:

画一段文本:
图示如下:

画一条直线:
图示如下:

画一段折线:
图示如下:

画一个填充颜色逐渐变化的多边形图形:
图示如下:

(注:以上例子均需在Windows2000 Server版或Windows XP Professional版以及Vs.net环境下才能实现)
(责任编辑Sunny )
GDI+是从GDI演化而来的,但是在Visual Studio的以前版本中使用GDI是相当复杂的,而且工作量巨大。现在在GDI+中,微软已经帮我们解决了许多问题,因而使用GDI+编程将变得非常容易。
GDI+包含在System.Drawing.Dll集合中,所有的GDI+类包含在System.Drawing,System.Text,System.Printing,System.Internal,System.Imaging,System.Drawing2D以及System.Design等命名空间中。
本文先向大家介绍一下图形类(Graphics Class)。然后,会向大家介绍一些最常用的类和结构,包括画笔(Pen)、画刷(Brush)、字体(Font)、颜色(Color)等类或结构。文章的最后还给出了一些很有用的用.Net框架的原生语言C#实现的例子。
我们用图形类的对象来表示GDI+的图形表面。为了使用GDI+,我们必须先建立一个图形类对象。通常,我们可以从Paint这个事件获得图形类对象的一个引用或是通过重载方法OnPaint来取得该对象。具体方法如下:
|
或是:
|
建立好图形类对象后,我们就可以调用以下一些方法来完成基本的画图功能了。
| DrawArc | (已重载的)画一段弧线 |
| DrawClosedCurve | (已重载的)画一段由一些点确定的闭合折线 |
| DrawCurve | (已重载的)画一段由一些点确定的折线 |
| DrawEllipse | (已重载的)画一个椭圆 |
| DrawImage | (已重载的)画一副图象 |
| DrawLine | (已重载的)画一条直线 |
| DrawPath | 画一段路径(包括直线和曲线) |
| DrawPie | (已重载的)画一个馅饼区的轮廓 |
| DrawPolygon | (已重载的)画一个多边形的轮廓 |
| DrawRectangle | (已重载的)画一个矩形的轮廓 |
| DrawString | (已重载的)画一串字符串 |
| FillEllipse | (已重载的)填充一个椭圆形区域 |
| FillPath | 填充一个路径 |
| FillPie | (已重载的)填充一个馅饼区域 |
| FillPolygon | (已重载的)填充一个多边形 |
| FillRectangle | 用画刷填充一个矩形 |
| FillRectangles | 用画刷填充一系列矩形 |
| FillRegion | 填充一个区域 |
建立图形对象后,我们就可以用它来画线、填充图形以及画文本等等。以下是一些主要的图形对象:
| Brush | 用来填充特定的表面 |
| Pen | 用来画直线、多边形、矩形、弧线以及馅饼区等 |
| Font | 用来设置文本的字体 |
| Color | 用来设置特定对象的颜色(在GDI+中,颜色可以是Alpha混合的) |
画刷类是一个抽象基类,我们不能直接将它实例化。我们必须实例化它的子类对象,它的子类包括:SolidBrush,TextureBrush,RectangleGradientBrush以及LinearGradientBrush。
举例如下:
|
SolidBrush类定义一把由单色构成的画刷。这个画刷可以用来填充像矩形、椭圆形、馅饼形、多边形以及路径这样的图形区域。
TextureBrush类定义一把可以将一定区域用图象来填充的画刷。
LinearGradiantBrush类可以定义一把两种颜色间变化的画刷,也可以定义一把多种颜色间变化的画刷。
画笔类用来画具有特定宽度和风格的直线和曲线。我们必须先用画笔类的构造函数初始化一个画笔对象,在实例化的时候还可以用到颜色和画刷。
用特定的颜色初始化新的画笔对象:
public Pen(Color);
用特定的画刷初始化新的画笔对象:
public Pen(Brush);
用特定的画刷以及宽度初始化新的画笔对象:
public Pen(Brush, float);
用特定的颜色以及宽度初始化新的画笔对象:
public Pen(Color, float);
举例如下:
|
或是:
|
以下是画笔类的一些最常用的属性:
| Alignment | 获得或设置用画笔画的对象的边界 |
| Brush | 获得或设置决定画笔特性的画刷 |
| Color | 获得或设置画笔的颜色 |
| Width | 获得或设置画笔的宽度 |
字体类决定了特定文本的字体格式,比如:字体类型、大小以及风格。我们用字体类的构造函数建立一种字体。
用特定的属性初始化新的字体对象:
|
用特定的已存在的字体和字体风格初始化新的字体对象:
|
以下是一些字体风格:
| Bold | 粗体 |
| Italic | 斜体 |
| Regular | 正常字体 |
| Strikeout | 有删除线 |
| Underline | 有下划线 |
举例如下:
|
一个颜色结构代表一种ARGB格式的颜色。以下是它的ARGB属性:
A:获得颜色的Alpha成分值
B:获得颜色的蓝色成分值
G:获得颜色的绿色成分值
R:获得颜色的红色成分值
下面是如何使用颜色结构的例子:
|
到现在,我相信大家已经对.Net框架下的GDI+有了大致的了解。为了让大家更直观的理解有关GDI+的编程知识,我特意为大家准备了以下一些基本但又很有用例子。通过对这些例子的学习,我相信大家对.Net框架下的GDI+编程会有更深刻的理解。同时要说明的是,下面的例子是用C#语言实现的,如果你是一位VB.net的爱好者,不妨通过适当修改代码来实现同样的功能。
画一个矩形:
|
图示如下:

画一个椭圆:
|
图示如下:

画一段文本:
|
图示如下:

画一条直线:
|
图示如下:

画一段折线:
|
图示如下:

画一个填充颜色逐渐变化的多边形图形:
|
图示如下:

(注:以上例子均需在Windows2000 Server版或Windows XP Professional版以及Vs.net环境下才能实现)
(责任编辑
浙公网安备 33010602011771号