配色: 字号:
GDI+编程
2012-01-19 | 阅:  转:  |  分享 
  
本章主要内容10.1GDI+概述10.2创建Graphics对象10.3颜色和画笔10.4画刷10.5
基本图形的绘制和填充pen1.EndCap=System.Drawing.Drawing2D.L
ineCap.SquareAnchor;g.DrawLine(pen1,150,46,250,4
6);//图中右边第4条线pen1.EndCap=System.Drawing.Drawing
2D.LineCap.Triangle;g.DrawLine(pen1,150,58,250,5
8);//图中右边第5条线pen1.EndCap=System.Drawing.Drawing
2D.LineCap.DiamondAnchor;//图中右边第6条线g.Dr
awLine(pen1,150,70,250,70);}private
voidbutton2_Click(objectsender,EventArgse){
Graphicsgraphics=this.CreateGraphics();Penmy
Pen=newPen(Color.Blue,6);PointFpoint1=newPoi
nt(230,20);PointFpoint2=newPoint(280,50);
PointFpoint3=newPoint(220,80);PointFpo
int4=newPoint(360,80);PointFpoint5=newPoint(
300,50);PointFpoint6=newPoint(360,20);
PointF[]myPoints={point1,point2,point3,point4,point5,
point6};graphics.DrawPolygon(myPen,myPoints);
}例子:编写程序,当用户单击【绘制基数样条】按钮,在窗体中就可绘制一条经过指定Point结构的基数样条。运行界面:
第10章GDI+编程■GDI+是GDI的增强版。它是微软在Windows2000以后操作系统中提供的新接口,其通过
一套托管代码的类来展现,这套类被称为GDI+的“托管类接口”。■GDI+是2D(2维)图形库,它允许程序员用库中的函数编写
与显视器、打印机和文件等物理设备进行交互的Windows和Web应用程序,可以在这些设备上输出字符和2D图形。10.1GD
I+概述■Graphics类中提供的绘图函数是使用GDI+类中提供的绘图工具来输出字符或绘制图形。■GDI+默认绘图坐
标以窗体用户区左上角为原点,x轴向右为正方向,y轴向下为正方向,单位为像素。10.2创建Graphics对象例子:创
建一个Graphics对象,并在Graphics对象中绘制直线。运行界面:主要代码:
privatevoidbutton1_Click(objectsender,EventArgse)
{Graphicsgraphics=this.CreateGraphics();
PenmyPen1=newPen(Color.Blue,2);graphics.D
rawLine(myPen1,50,30,170,30);PenmyPen2=newPe
n(Color.Red,6);graphics.DrawLine(myPen2,50,40,1
70,40);}10.3颜色和画笔1、颜色:.NET框架的Color结构用于表
示不同的颜色。颜色与笔和画笔一起使用来指定要呈现的颜色。(1)系统定义的颜色:可以通过Color结构访问若干系统定义的颜色。
ColormyColor;myColor=Color.Red;myColor=Color.Aquamarine
;myColor=Color.LightGoldenrodYellow;myColor=Color.PapayaWhi
p;myColor=Color.Tomato;(2)用户定义的颜色可以使用Color.FromArg
b方法创建用户定义的颜色。定义时可以指定一种颜色中红色、蓝色和绿色的强度。ColormyColor;myColor=
Color.FromArgb(127,23,56,78);2、画笔:在GDI+中,可使用笔对象和画笔对象来
呈现图形、文本和图像。笔是Pen类的实例,可用于绘制线条和空心形状。画笔可用于绘制线条、曲线以及勾勒形状轮
廓。下面的代码创建一支基本的画笔://创建一个红色的笔PenmyPen=newPen(Color.Red);//
创建一个默认宽度为1得黑笔PenmyPen=newPen(Color.Black);//创建一个宽度为5的黑笔Pe
nmyPen=newPen(Color.Black,5);也可以通过已存在的画刷对象创建画笔。下面的代
码创建基于已存在画笔(名为myBrush)的笔://创建一个深蓝的画刷SolidBrushmyBrush=newS
olidBrush(Color.Blue);//创建一个画笔,与myBrush有着相同的属性,并且默认宽度为1。Penmy
Pen=newPen(myBrush);//创建一个画笔,与myBrush有着相同的属性,并且宽度为5.PenmyP
en=newPen(myBrush,5);例子:当单击【画线】按钮时,用画笔Pen类常用的属性画出不同的图案。
运行界面:主要代码:privatevoidbutton1_Click(objectsender,Even
tArgse){Graphicsg=this.CreateGraphics()
;Penpen1=newPen(Color.Red,6);//默认为实线笔
g.DrawLine(pen1,10,10,100,10);//画实线,图中左边第1条线
pen1.DashStyle=System.Drawing.Drawing2D.DashStyle.Da
sh;//虚线笔g.DrawLine(pen1,10,20,100,20);//
画虚线,图中左边第2条线pen1.DashStyle=System.Drawing.Drawing2
D.DashStyle.DashDot;//点短线风格的线g.DrawLine(pen1,10,30
,100,30);//图中左边第3条线//下条语句设置双点,短线风格的线分格
pen1.DashStyle=System.Drawing.Drawing2D.DashStyle.DashDo
tDot;g.DrawLine(pen1,10,40,100,40);
//图中左边第4条线pen1.DashStyle=System.Drawing.Draw
ing2D.DashStyle.Dot;//由点组成的线g.DrawLine(pen1,10,5
0,100,50);//图中左边第5条线pen1.DashStyle=System.D
rawing.Drawing2D.DashStyle.Solid;//恢复实线笔pen1.EndCap
=System.Drawing.Drawing2D.LineCap.ArrowAnchor;//后箭头
g.DrawLine(pen1,150,10,250,10);//图中右边第1条线p
en1.StartCap=System.Drawing.Drawing2D.LineCap.ArrowAnchor;//前箭
头g.DrawLine(pen1,150,22,250,22);//图中右边第2条线
pen1.EndCap=System.Drawing.Drawing2D.LineCap.RoundAn
chor;g.DrawLine(pen1,150,34,250,34);//图中右边第3
条线10.4画刷画刷类对象指定填充封闭图形内部的颜色和样式,封闭图形包括矩形、椭
圆、扇形、多边形和任意封闭图形。GDI+系统提供了几个预定义画刷类,包括:SolidBrush:单色画刷,在命名空间Syste
m.Drawing中定义。HatchBrush:阴影画刷TextureBrush:纹理(图像)画刷。LinearGradi
entBrush:两个颜色或多个颜色线性渐变画刷。PathGradientBrush:使用路径定义刷子形状的复杂渐变画刷。
例一:用HatchBrush画刷,画出不同阴影的背景图案。运行界面:主要代码:privat
evoidbutton1_Click(objectsender,EventArgse){
Graphicsg=this.CreateGraphics();//得到窗体的使用的Graphics类对
象HatchBrushb1=newHatchBrush(HatchSty
le.BackwardDiagonal,Color.Blue,Color.LightGray);g.
FillRectangle(b1,10,10,50,50);//矩形被填充左斜线HatchB
rushb2=newHatchBrush(HatchStyle.Cross,Color.Blue,Color.Ligh
tGray);g.FillRectangle(b2,70,10,50,50);//矩形被填充
方格HatchBrushb3=newHatchBrush(HatchSt
yle.ForwardDiagonal,Color.Blue,Color.LightGray);g.
FillRectangle(b3,130,10,50,50);//矩形被填充右斜线
HatchBrushb4=newHatchBrush(HatchStyle.Diag
onalCross,Color.Blue,Color.LightGray);g.FillRectan
gle(b4,190,10,50,50);//矩形被填充菱形HatchBrushb5=
newHatchBrush(HatchStyle.Vertical,Color.Blue,Color
.LightGray);g.FillRectangle(b5,250,10,50,50);/
/矩形被填充竖线HatchBrushb6=newHatchBrush(H
atchStyle.Horizontal,Color.Blue,Color.LightGray);g
.FillRectangle(b6,310,10,50,50);//矩形被填充横线}10.5基本
图形的绘制和填充10.5.1绘制矩形(1)绘制由Rectangle结构指定的矩形。语法:publicvoidDra
wRectangle(Penpen,Rectanglerect)参数说明如下:Pen:Pen对象,它确定矩形的颜色、线
条宽度和样式。Rect:表示要绘制矩形的Rectangle结构。例如,声明一个Rectangle结构,代码如下:Recta
nglerect=newRectangle(0,0,20,30);(2)绘制由坐标对,宽度和高度指定的矩形。语法:publ
icvoidDrawRectangle(Penpen,intx,inty,intwidth,,intheight)
参数说明如下:pen:Pen对象,它确定矩形的颜色、线条宽度和样式。x:要绘制矩形的左上角的x坐标y:要绘制矩形的左上
角的y坐标width:要绘制矩形的宽度height:要绘制矩形的高度例子:用上面提到的两种方法画两个矩形。运行界面:
主要代码:privatevoidbutton1_Click(objectsender,E
ventArgse){Graphicsgraphics=this.Create
Graphics();PenmyPen=newPen(Color.Red,6);
Rectanglerect=newRectangle(35,20,80,50);
graphics.DrawRectangle(myPen,rect);}privatev
oidbutton2_Click(objectsender,EventArgse){
Graphicsgraphics=this.CreateGraphics();PenmyP
en=newPen(Color.Blue,2);graphics.DrawRectangle(m
yPen,220,20,80,50);}绘制椭圆时,可以调用Graphics类中的Dr
awEllipse方法,该方法为可重载方法,它主要用来绘制边界由Rectangle结构指定的椭圆,其常用的格式有以下两种:(1
)绘制边界由Rectangle结构指定的椭圆。语法:publicvoidDrawEllipse(Penpen,Recta
nglerect)参数说明如下:Pen:Pen对象,它确定矩形的颜色、线条宽度和样式。Rect:Rectangle结构
,表示要绘制椭圆的边界。10.5.2绘制椭圆(2)绘制由一个边框(该边框由一对坐标、高度和宽度指定)指定的圆。语法:
publicvoidDrawEllipse(Penpen,intx,inty,intwidth,intheig
ht)参数说明如下:pen:Pen对象,它确定矩形的颜色、线条宽度和样式。x:定义椭圆边框的左上角的x坐标y:定义椭
圆边框的左上角的y坐标width:定义椭圆边框的宽度height:定义椭圆边框的高度例一:用上面提到的两种方法画两个椭圆。
运行界面:主要代码:privatevoidbutton1_Click(objectsender,E
ventArgse){Graphicsgraphics=this.Create
Graphics();PenmyPen=newPen(Color.Blue,3);
RectanglemyRectangle=newRectangle(30,20,100,60);
graphics.DrawEllipse(myPen,myRectangle);}
privatevoidbutton2_Click(objectsender,EventArgse)
{Graphicsgraphics=this.CreateGraphics();
PenmyPen=newPen(Color.Red,6);graphics.D
rawEllipse(myPen,220,20,120,60);}10.5.3绘制圆弧
绘制圆弧时,可以调用Graphics类中的DrawArc方法,该方法可以重载,它主要用来绘制一段弧线,其常用的格式有以下两种。
(1)绘制一段弧线,它表示由Rectangle结构指定的圆弧的一部分。语法:publicvoidDrawArc(Penpe
n,Rectanglerect,floatstartAngle,floatsweepAngle)参数说明如下:pen
:Pen对象,它确定矩形的颜色、线条宽度和样式。Rect:Rectangle结构,表示要绘制圆弧的边界。startAngle:
从x轴到弧线的起点沿顺时针方向度量的角(以度为单位)。sweepAngle:从startAngle参数到弧线的结束点沿顺时
针方向度量的角(以度为单位)。(2)绘制由一个边框(该边框由一对坐标、高度和宽度指定)指定的圆。语法:publicvoid
DrawArc(Penpen,intx,inty,intwidth,intheight,floatstartA
ngle,floatsweepAngle)参数说明如下:pen:Pen对象,它确定矩形的颜色、线条宽度和样式。x:定义
椭圆边框的左上角的x坐标y:定义椭圆边框的左上角的y坐标width:定义椭圆边框的宽度height:定义椭圆边框的高度st
artAngle:从x轴到弧线的起点沿顺时针方向度量的角(以度为单位)。sweepAngle:从startAngle参数到
弧线的结束点沿顺时针方向度量的角(以度为单位)。例子:用上面提到的两种方法画两段弧。运行界面:主要代码:private
voidbutton1_Click(objectsender,EventArgse){
Graphicsgraphics=this.CreateGraphics();Penm
yPen=newPen(Color.Blue,5);RectanglemyRectangle=
newRectangle(30,20,100,60);graphics.DrawArc(myP
en,myRectangle,210,120);}privatevoidbutton2
_Click(objectsender,EventArgse){Graphics
graphics=this.CreateGraphics();PenmyPen=newPe
n(Color.Red,10);graphics.DrawArc(myPen,220,20,1
00,50,80,180);}绘制多边形,需要Graphics对象,Pen对象和Point(或P
ointF)对象数组。Graphics对象提供DrawPolygon方法,Pen对象提供呈现多边形的线条属性,例如,线条宽度,颜色
等,Point(或PointF)对象数组确定储存多边形的各个顶点。Pen对象和Point(或PointF)对象数组作为参数传递给D
rawPolygon方法,该方法为可重载方法,其常用格式有以下两种。10.5.4绘制多边形(1)绘制由一组Point结构定
义的多边形。语法:publicvoidDrawPolygon(Penpen,Point[]points)参数说明如下:
pen:Pen对象,它确定矩形的颜色、线条宽度和样式。Points:Point结构数组,这些结构表示多边形的各个顶点。(2
)绘制一个由PointF结构定义的多边形。语法:publicvoidDrawPolygon(Penpen,PointF[]
points)参数说明如下:pen:Pen对象,它确定矩形的颜色、线条宽度和样式。Points:PointF结构数组,这些结构表示多边形的各个顶点。例一:用上面提到的两种方法画两个多边形。运行界面:主要代码:privatevoidbutton1_Click(objectsender,EventArgse){Graphicsgraphics=this.CreateGraphics();PenmyPen=newPen(Color.Red,3);Pointpoint1=newPoint(80,20);Pointpoint2=newPoint(40,50);Pointpoint3=newPoint(80,80);Pointpoint4=newPoint(160,80);Pointpoint5=newPoint(200,50);Pointpoint6=newPoint(160,20);Point[]myPoints={point1,point2,point3,point4,point5,point6};graphics.DrawPolygon(myPen,myPoints);}
献花(0)
+1
(本文系想念大家的...首藏)