GDI+快速入门

GDI+的内容很多,可以写成一本厚厚的书,我们不可能在这里详细介绍GDI+,只能介绍其中最基础的部分。
如果你能掌握 这些基础的内容,也足以应付大多数场合需要。

画笔(Pen)

绘图当然要用笔(Pen)来画,通过Pens可以返回各种颜色的默认画笔,例如:

Dim pn As Pen = Pens.Red '获得红色的默认画笔

默认画笔的宽度都是一个向度,如果要获得一个指定宽度的画笔,可以采用下面的语法:

Dim 变量名 As New Pen(颜色, 宽度)

例如:

Dim pn As New Pen(Color.Green, 5) '获得一个绿色的宽度为5的画笔

Pen有一个DashStyle属性,用于定义通过此画笔绘制出的线条类型,该属性是一个DashStyle型枚举,包括以下可选值:

Dash       由线段构成的直线。
DashDot    由线段和点间隔构成的直线。
DashDotDot 由线段和连续两个点间隔构成的直线
Dot        由点构成的直线。
Solid      实线,这是默认值。

例如下面的代码定义一个红色的画笔,该画笔画出来的线条将是虚线,而不是实线:

Dim pn As New Pen(Color.Red)
pn.DashStyle = DashStyle.Dash

画刷(Brush)

画图除了要用Pen(画笔),还要用Brush(画刷)。
通过Brushes可以返回各种颜色的默认画刷,例如:

Dim br As Brush = Brushes.Red '获得红色的画刷

可以用自定义的颜色来定义画刷,例如:

Dim br1 As Brush = New SolidBrush(Color.FromARGB(255,255,192,203))
Dim
br2 As Brush = New SolidBrush(Color.FromARGB(-16181))

点(Point)

一个点(Point)表示一个位置,定义一个点的语法是:

Dim 变量名 As New Point(x, y)

X表示点的水平坐标位置,y表示点的垂直位置,单位为像素,坐标原点为左上角。

区域()

Graphics成员

Grpahics提供了很多方法用于绘制各种各样的图形和文字,我们下面逐一介绍这些方法。
在介绍的过程中,我们会提供一些示例代码,为了便于测试这些代码,请新建一个窗口,在窗口中分别加入一个绘图板(Painter)和一个按钮(Button),将按钮的Click事件代码设置为示例代码。

DrawLine(pen,x1,y1,x2,y2)

绘制一条直线,参数pen指定画笔,x1和y1指定直线的起始位置,x2和y2指定直线的结束位置,单位为像素。

例如:

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
g.DrawLine(Pens.Red,
30,0,30,60)
g.DrawLine(Pens.Red,
0,30,60,30
)
p.Repaint()

绘制结果:

DrawLines(pen,Points)

绘制一个线条,将一系列的点连接起来,参数Points为一个数组,指定所有要连接的点。

例如:

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
Dim
points(3) As Point
points(
0) = New Point(10, 10)
points(
1) = New Point(10, 100)
points(
2) = New Point(50, 10)
points(
3) = New Point(10,10)
g.DrawLines(Pens.Green, points)
p.Repaint()

绘制结果:

DrawRectangle(pen,x,y,width,height)

绘制一个四边形,参数x和y指定四边形的起始位置,width和height分别用于指定四边形的宽度和高度。

例如:

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
Dim
n As New Pen(Color.Red,5)
g.DrawRectangle(n,
10,10,100,50)
p.Repaint()

绘制结果:

DrawPolygon(Pen,Points)

绘制一个多边型,参数Points为一个数组,指定多边形的各个顶点。

例如:

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
Dim
points(2) As Point
points(0) = New Point(10, 10)
points(1) = New Point(10, 100)
points(2) = New Point(50, 10)
g.DrawPolygon(Pens.Green, points)
p.Repaint()

绘制结果:

DrawEllipse(pen,x,y,width,height)

绘制一个椭圆,x和y指定椭圆边框的左上角位置,width和height指定椭圆边框的宽度和高度。

例如:

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
g.DrawEllipse(Pens.Blue,10,10,100,50)
p.Repaint()

绘制结果:

DrawArc(pen,x,y,width,height,startAngle,sweepAngle)

绘制一段弧型,弧形是椭圆周边的一部分,所以前五个参数和DrawEllipse方法一致,startAngle指定弧形的起始角度,sweepAngle指定该弧形所扫过的角度值,也就是幅度,方向为顺时钟。

例如:

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
Dim
pn As New Pen(Color.Red,3)
g.DrawEllipse(Pens.Blue,10,10,100,100)
'绘制一个弧形,从45度角开始,幅度为180度

g.DrawArc(pn,10,10,100,100,45,180)
p.Repaint()

绘制结果:

DrawPie(pen,x,y,width,height,startAngle,sweepAngle)

绘制一个扇形,扇形是椭圆的一部分,所以前五个参数和DrawEllipse方法一致,startAngle指定扇形的起始角度,sweepAngle指定该扇形所扫过的角度值,也就是幅度,方向为顺时钟。

例如:

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
Dim
pn As New Pen(Color.Red,3)
g.DrawEllipse(Pens.Blue,10,10,100,100)
'绘制一个扇形,从45度角开始,幅度为90度

g.DrawPie(pn,10,10,100,100,45,90)
p.Repaint()

绘制结果:

 

FillRectangle(Brush,x,y,width,height)

填充一个四边形,参数Brush指定填充所使用的画刷,x和y指定四边形的起始位置,width和height分别用于指定四边形的宽度和高度。

例如:

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
g.FillRectangle(Brushes.Red,10,10,100,50)
p.Repaint()

绘制结果:

FillPolygon(Pen,Points)

填充一个多边型,参数Points为一个数组,指定多边形的各个定点。

例如:

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
Dim
points(2) As Point
points(0) = New Point(10, 10)
points(1) = New Point(10, 100)
points(2) = New Point(50, 10)
g.FillPolygon(Brushes.Green, points)
p.Repaint()

绘制结果:

FillEllipse(pen,x,y,width,height)

填充一个椭圆型,x和y指定椭圆边框的左上角位置,width和height指定椭圆边框的宽度和高度。

例如:

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
g.FillEllipse(Brushes.Blue,10,10,100,60)
p.Repaint()

绘制结果:

FillPie(pen,x,y,width,height,startAngle,sweepAngle)

填充一个扇形,扇形是椭圆的一部分,所以前五个参数和FillEllipse方法一致,startAngle指定扇形的起始角度,sweepAngle指定该扇形所扫过的角度值,也就是幅度,方向为顺时钟。

例如:

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
g.DrawEllipse(Pens.Blue,10,10,100,100)
'填充一个扇形,从45度角开始,幅度为90度

g.FillPie(Brushes.Red,10,10,100,100,45,90)
p.Repaint()

绘制结果:

DrawString(s,font,brush,x,y)

在指定的位置,用指定的画刷和字体,绘制指定的文本。
参数s指定要绘制的文本,font指定字体,brush指定画刷,x和y指定起始位置。

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
Dim
fnt As New Font("宋体",16)
Dim
msg As String = "I Like Foxtable"
g.DrawString(msg,fnt,Brushes.Red,10,10)
p.Repaint()

绘制结果:

DrawImage(Image,x,y,width,height)

在指定位置按指定大小绘制指定的图形。
参数Image为要绘制的图形(Image),
可用GetImage函数从指定的图形文件中获得图形,如果文件已经事先复制到管理项目的Images子目录下,则只需指定文件名即可,否则需要包括路径。
参数x和y指定图形的起始位置,width和height指定大小。
其中width和height参数是可选的,如果省略,则按图片的原始大小绘制。

例如:

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
g.DrawImage(getImage("c:\logo.jpg"),10,10)
p.Repaint()

绘制结果:

Clear(Color)

清除所有内容,并将背景色设为参数Color指定的颜色。

例如:

Dim p As WinForm.Painter = e.Form.Controls("Painter1")
Dim
g As Graphics = p.Graphics
g.Clear(Color.White)
'清除所有内容,并将背景颜色设为白色

p.Repaint()

 


本页地址:http://www.foxtable.com/webhelp/topics/1482.htm