《图形应用程序设计.ppt》由会员分享,可在线阅读,更多相关《图形应用程序设计.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、图形应用程序设计本章要学习的绘图对象nn 颜色对象colornn 画布对象graphicsnn 画笔对象pennn 笔刷对象brushes颜色对象Colorn n 用Color.FromArgb()设置颜色 使用使用该该方法方法设设置置颜颜色是色是汇汇集集透明程度、红色光、绿色光、蓝色光等四道不同性等四道不同性质质的光的光线线的的调调色效果,色效果,语语法如下:法如下:Color.FromArgb(A,R,G,B)11、说说明:明:AA代表不透明度,从代表不透明度,从00至至255255共分成共分成256256个程度,个程度,数数值值越小代表越透明;数越小代表越透明;数值值越大代表越不透明。其
2、中越大代表越不透明。其中00代表完全透明,代表完全透明,255255代表完全不透明。代表完全不透明。AA的默的默认值为认值为255255。22、R,G,BR,G,B:三个量分:三个量分别别代表代表红红、绿绿、蓝颜蓝颜色光的色光的强强度,度,每个每个颜颜色色值值分分别别从从00至至255255共分成共分成256256个个强强度,数度,数值值越越大表示大表示该颜该颜色光越色光越强强。例:将例:将picturebox1picturebox1控件的背景色控件的背景色设设成紫色成紫色Picturebox1.backcolor=color.fromArgb(255,0,255)Picturebox1.ba
3、ckcolor=color.fromArgb(255,0,255)n n 取出Color 的(A,R,G,B)自变量值语语法:法:A=A=对对象象Color.AColor.AR=R=对对象象Color.RColor.RG=G=对对象象Color.GColor.GB=B=对对象象Color.BColor.B例:取出例:取出PictureBox1PictureBox1控件背景色的控件背景色的RR自自变变量量值值。练习 练习:指出:指出 图 图 片控件 片控件 Picturebox Picturebox 背景色的 背景色的 颜 颜 色构成(色构成(A,R,G,B A,R,G,B)n n Form1_
4、Paint n n Dim A,R,G,B As Integern n Label1.Text=目前颜色设置值:&vbNewLine&ARGB(&A&,&R&,&G&,&B&)n n End Sub练习 练习:接上例增加:接上例增加 调 调 色功能,使能在 色功能,使能在 picturebox picturebox 控件中 控件中 显 显 示 示 调 调 色 色动态 动态。n n Dim A,R,G,B As Integer Dim A,R,G,B As Integern n Sub showARGB()Sub showARGB()n n Label1.Text=Label1.Text=目前颜
5、色设置值:目前颜色设置值:&vbNewLine&ARGB(&A&,&R&,&G&vbNewLine&ARGB(&A&,&R&,&G&,&B&),&B&)n n Label2.Text=A=&A Label2.Text=A=&An n Label3.Text=R=&R Label3.Text=R=&Rn n Label4.Text=G=&G Label4.Text=G=&Gn n Label5.Text=B=&B Label5.Text=B=&Bn n End Sub End Subn nPrivate Sub Private Sub TrackBar_ScrollTrackBar_Scroll
6、(ByVal sender As(ByVal sender As System.Object,ByVal e As System.EventArgs)System.Object,ByVal e As System.EventArgs)Handles TrackBar1.Scroll,TrackBar2.Scroll,Handles TrackBar1.Scroll,TrackBar2.Scroll,TrackBar3.Scroll,TrackBar4.ScrollTrackBar3.Scroll,TrackBar4.Scrolln n A=TrackBar1.Value A=TrackBar1
7、.Valuen n R=TrackBar2.Value R=TrackBar2.Valuen n G=TrackBar3.Value G=TrackBar3.Valuen n B=TrackBar4.Value B=TrackBar4.Valuen n PictureBox1.BackColor=Color.FromArgb(A,R,PictureBox1.BackColor=Color.FromArgb(A,R,G,B)G,B)n n Call showARGB()Call showARGB()n n End Sub End Subn n 用Color 列举设置颜色 使用Color列举可以直
8、接指定系统定义的颜色,这些被定义的颜色都是用英文来命名的,超过140个,常用的名称有red,green,blue,yellow,brown,white,black等。例:将Button1控件的背景色设置成粉红色。button1.backColor=color.pinkbutton1.backColor=color.pink练习 练习:接上例:接上例,增加 增加 设 设 置 置 为 为 指定 指定 颜 颜 色功能,即按了有 色功能,即按了有 颜 颜 色的按 色的按 钮时 钮时,使 使 picturebox1 picturebox1 控件内 控件内 显 显 示按 示按 钮 钮 的 的 颜 颜 色,
9、色,轨 轨 迹棒也自 迹棒也自 动 动 跟着移 跟着移 动 动。n nForm1_PaintForm1_Paintn n Button1.BackColor=Color.Firebrick Button1.BackColor=Color.Firebrickn n Button2.BackColor=Color.BurlyWood Button2.BackColor=Color.BurlyWoodn n Button3.BackColor=Color.Linen Button3.BackColor=Color.Linenn n Button4.BackColor=Color.Orchid But
10、ton4.BackColor=Color.Orchidn n Button5.BackColor=Color.Khaki Button5.BackColor=Color.Khakin nPrivate SubPrivate Sub Button_Click Button_Click(ByVal sender As System.Object,(ByVal sender As System.Object,ByVal e As System.EventArgs)ByVal e As System.EventArgs)Handles Button1.Click,Handles Button1.Cli
11、ck,Button2.Click,Button3.Click,Button4.Click,Button2.Click,Button3.Click,Button4.Click,Button5.ClickButton5.Clickn n PictureBox1.BackColor=PictureBox1.BackColor=sender sender.backcolor.backcolorn n Call showARGB()Call showARGB()n n End Sub End Sub画布对象Graphicsn 声明与建立画布对象 一般在绘图时,需要一块画布供画家作画。语法:dim 画布对
12、象 as graphics 画布对象=对象(控件).CreateGraphics()或:dim 画布对象 as graphics=对象(控件).CreateGraphics()例:在窗体内建立一个名叫g 的画布对象 dim g as graphics g=form1.CreateGraphics()或:dim g as graphics=form1.CreateGraphics()例2:清理目前在图片框picShow 控件上所绘制的图形。PicShow.refresh()删除画布对象 例:将画布对象g 从主存储器中删除。g.dispose()画笔对象pennn 声明和建立画笔对象 dim 画笔
13、对象 as new pen(颜色,粗细)或:dim 画笔对象 as pen 画笔对象=as new pen(颜色,粗细)例:dim p as new pen(color.green,5)说明:1、若省略粗细,默认为1 pixel。2、画笔对象颜色和粗细可用下列语法重新设置。画笔对象.color=颜色 画笔对象.width=粗细 例:p.color=color.fromArgb(128,55,0,255)p.width=3 绘制直线:drawLine 方法语法:画布对象.drawLine(画笔对象,x1,y1,x2,y2)说明:(x1,y1)是直线的起点坐标,(x2,y2)是直线的终点坐标。例:
14、在画布对象g 上用画笔p 绘制坐标(100,50)到(200,270)之间的直线。dim p as new pen(color,green,5)dim p as new pen(color,green,5)g.drawline(p,100,150,200,270)g.drawline(p,100,150,200,270)或:g.drawline(new pen(color.green,5),100,150,200,270)g.drawline(new pen(color.green,5),100,150,200,270)绘制矩形:drawRectangle 方法语法:Dim 矩形对象 as n
15、ew rectangle(x,y,w,h)画布对象.drawRectangle(画笔对象,矩形对象)或:画布对象.drawRectangle(画笔对象,x,y,w,h)说明:(x,y)是矩形框的左上角起点坐标,w 为矩形的宽度,h 为高度例:在画布对象g 上用画笔p 绘制矩形,左上角坐标为(50,60),宽为100pixel,高为70pixel。Dim rec as new rectangle(50,60,100,70)g.drawRectangle(p,rec)或:g.drawRectangle(p,50,60,100,70)绘制多边形:drawPolygon 方法语法:Dim 坐标对象()
16、as point=new point(x1,y1),new point(x2,y2),new point(x3,y3),画布对象.drawPolygon(画笔对象,坐标对象)或:Dim p1 as point=new point(x1,y1)Dim p2 as point=new point(x2,y2)Dim p3 as point=new point(x3,y3)Dim 坐标对象 as point()=p1,p2,p3,画布对象.drawPolygon(画笔对象,坐标对象)例:画一个三角形,三个顶点分别为(25,25)、(0,50)、(50,50)Dim pts()as point=new
17、 point(25,25),new point(0,50),new point(50,50)g.DrawRectangle(p,pts)或:Dim p1 as point=new point(25,25)Dim p2 as point=new point(0,50)Dim p3 as point=new point(50,50)Dim pts as point()=p1,p2,p3,g.drawPolygon(p,pts)创建图形应用程序的一般步骤1.创建画布,声明graphics 对象2.用画笔对象pen 绘制图形轮廓,并用color 对象设置颜色n n 实例练习:以窗体为画布,绘制直线、矩
18、形、多边形。清理画布对象n n 画布对象.Clear(颜色)将画布将画布对对象的内容清理成指定的象的内容清理成指定的颜颜色。色。例:将画布例:将画布对对象象gg清理清理为为白色白色 g.clear(color.white)g.clear(color.white)n n 对象.Refresh()将画布清理将画布清理为为原控件的底色。原控件的底色。例例11:清理目前在窗体上所:清理目前在窗体上所绘绘制的制的图图形。形。me.refresh()me.refresh()绘制椭圆形:drawEllipse 方法语法:Dim 矩形对象 as new rectangle(x,y,w,h)画布对象.drawE
19、llipse(画笔对象,矩形对象)或:画布对象.drawEllipse(画笔对象,x,y,w,h)说明:(x,y)是椭圆外接框左上角坐标,w 为椭圆的宽度,h 为椭圆的高度。例:在画布对象g 上用画笔p 绘制椭圆,椭圆外接框左上角坐标为(50,60),向右为100pixel,向下高为70pixel。dim rec as new rectangle(50,60,100,70)g.drawEllipse(p,rec)或:g.drawEllipse(p,50,60,100,70)绘制弧形:drawArc 方法语法:Dim 矩形对象 as new rectangle(x,y,w,h)画布对象.draw
20、Arc(画笔对象,矩形对象,startA,sweepA)或:画布对象.drawArc(画笔对象,x,y,w,h,startA,sweepA)说明:1.1.一个360 度的圆弧是一个圆周,而(x,y)是圆外接框左上角坐标,w 是圆周的宽度,h是高度.2.2.startA 是圆弧起点角度,以一个参考点为圆心,圆心右侧水平线为0 度,再以顺时针方向开始张开的角度为角度值。3.3.sweepA 是由startA 开始算起所张开的角度,sweepA 若为正值则向顺时针方向张开;sweepA 若为负值则向逆时针方向张开。例:在画布对象g 上用画笔p 绘制一个弧形,角度由270 度画到0 度。Dim rec
21、 as new rectangle(50,60,100,70)g.drawArc(p,rec,270,90)或:g.drawArc(p,50,60,100,70,270,90)绘制扇形:drawPie 方法语法:Dim 矩形对象 as new rectangle(x,y,w,h)画布对象.drawPie(画笔对象,矩形对象,startA,sweepA)或:画布对象.drawPie(画笔对象,x,y,w,h,startA,sweepA)例:在画布对象g 上用画笔p 绘制一个扇形,角度由270 度画到180 度。Dim rec as new rectangle(50,60,100,70)g.Dra
22、wPie(p,rec,270,-90)或:g.DrawPie(p,50,60,100,70,270,-90)使用画笔对象Pen 所配合的绘图方法,只负责描绘图形的边框。若要进一步填满块的内部颜色,就必须使用笔刷对象brushes,但需要配合fillRectangle、fillPolygon、fillEllipse、fillPie 等绘图方法。语法:brushes.颜色 fillRectangle、fillPolygon、fillEllipse、fillPie 与前面讲的drawRectangle、drawPolygon、drawEllipse、drawPie 内变量用法类似笔刷对象brushe
23、sn n 实例:分别绘制如图所示图形。n n-Form1_Paint-Form1_Paint-n n Dim g As Graphics Dim g As Graphicsn n g=Me.CreateGraphics g=Me.CreateGraphicsn n g.DrawEllipse(New Pen(Color.Blue,4),20,g.DrawEllipse(New Pen(Color.Blue,4),20,20,50,70)20,50,70)n n g.FillEllipse(Brushes.Pink,120,20,50,70)g.FillEllipse(Brushes.Pink,
24、120,20,50,70)n n g.DrawEllipse(New Pen(Color.Blue,4),220,g.DrawEllipse(New Pen(Color.Blue,4),220,20,50,70)20,50,70)n n g.FillEllipse(Brushes.Pink,220,20,50,70)g.FillEllipse(Brushes.Pink,220,20,50,70)先画先画边边框再画内部框再画内部颜颜色,会造成色,会造成边边框会被遮盖一框会被遮盖一部分部分n n g.FillEllipse(Brushes.Pink,320,20,50,70)g.FillEllip
25、se(Brushes.Pink,320,20,50,70)n n g.DrawEllipse(New Pen(Color.Blue,4),320,g.DrawEllipse(New Pen(Color.Blue,4),320,20,50,70)20,50,70)可以达到可以达到预预期的效果期的效果绘制文字语法:dim f as new font(“字体名称”,fontSize,fontStyle)画布对象.drawString(“字符串文字”,f,笔刷对象,x,y)或:画布对象.drawString(“字符串文字”,new font(“字体名称”,fontSize,fontStyle),笔刷对
26、象,x,y)n n 实例:在画布上描绘出10 列相同内容的文字,并使字体逐列变大。n n-Form1_Paint-n n Dim g As GraphicsDim g As Graphicsn n g=Me.CreateGraphics()g=Me.CreateGraphics()n n Dim i,s,x,y As Integer Dim i,s,x,y As Integern n For i=1 To 10 For i=1 To 10n n s=6+i*3 s=6+i*3 大小大小n n x=i*20 x=i*20 n n y=2*i 2+4*i 4 y=2*i 2+4*i 4 以抛物以抛物线线的曲的曲线线来安排来安排文字列的文字列的xx与与yy的坐的坐标标n n Dim f As New Font(Dim f As New Font(隶书隶书,s,s,FontStyle.Underline)FontStyle.Underline)n n g.DrawString(Visual Basic.NET,f,g.DrawString(Visual Basic.NET,f,Brushes.Black,x,y)Brushes.Black,x,y)n n Next i Next i