本章主要内容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);} |
|