




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章GDI+绘图1本章主要内容:理解Grpahics对象。了解VisualBasic2005的坐标及颜色的使用。绘制基本的图形。绘制文本。创建一个画图的应用程序。2编程中一个非常有趣的部分就是图形图象的处理。VisualBasic2005几乎可以在任何控件上绘制图形。GDI+(GraphicsDeviceInterface)是新一代的.NETFramework中基于类的二维图形、图像和版面的图形设备接口,换句话说,GDI+就是Windows下的图形引擎,如果要设计.NETFramework图形应用程序,就必须使用GDI+。本章通过创建一个实例小画板应用程序演示了GDI+对象及其成员,包括使用画笔(Pen)、画刷(Brush)、颜色(color)、Point、Rectangle和Ellipse对象等,使读者掌握基本的GDI+编程技术。3概述GDI+GDI+包含在System.Drawing.dll程序集合中,所有的GDI+类包含在System.Drawing,System.Text,System.Printing,System.Internal,System.Imaging,System.Drawing2D和System.Design
六个命名空间内。其中system.Drawing
命名空间提供了对GDI+基本图形功能的访问。在System.Drawing.Drawing2D、System.Drawing.Imaging
以及System.Drawing.Text
命名空间中提供了更高级的功能。根据本章实际项目的需求,引入其中的若干个。与GDI+相关的六个命名空间如表9-1所示:4表9-1GDI+相关的六个命名空间命名空间说明System.Drawing提供基本的图形功能,包括表面绘图、图象、颜色、笔刷、钢笔和字体System.Drawing.Drawing2D提供高级光栅和矢量图形功能System.Drawing.Imaging提供高级图象功能,其底层的基本功能是在System.Drawing命名空间提供System.Drawing.Printing提供打印和打印预览功能System.Drawing.Text提供高级字体功能,其基本功能在System.Drawing命名空间中提供System.Drawing.Design提供的功能可增强对自定义控件的设计时支持,包括开发定制5使用GDI+绘图的基本过程同日常作画类似,基本步骤如下:第一步:选择要绘图的窗体或者控件,并创建其Graphics对象,也就是选好画布;第二步:选择绘图的工具(Pen对象、Brush对象等);第三步:调用Graphics对象的适当方法(DrawLine、DrawString、DrawImage等)进行绘图;第四步:调用Graphics对象的Dispose方法释放Graphics对象占用的内存。69.1Graphics对象Graphics对象是GDI+的核心,使用GDI+创建绘图,第一步总是先创建一个Graphics对象,它是用来绘制图形图像的容器,有助于图形操作的执行,然后使用GDI+的画笔、画刷等进行绘制线条形状、填充区域、显示文本图像等操作。Graphics对象表示GDI+的绘图表面,可以将其理解为画家的画布,所有允许在其表面进行绘图窗体和控件都具有Graphics对象,通过调用其CreateGraphics
方法获取对Graphics对象的引用。79.2创建Graphics对象创建Graphics的基本语法如下:DimgAsGraphicsg=控件(或窗体).CreateGraphics第一行声明了一个Graphics对象g;第二行调用要绘图的控件(或窗体)的CreateGraphics()方法获取对Graphics对象的引用。通过以上两条语句,就可以在该控件或窗体的表面进行绘图了。8例9.1创建简易小画板应用程序,通过调用PictureBox1的CreateGraphics方法来演示Graphics对象的创建。具体操作过程:⑴新建项目,选择“Windows应用程序”,项目名为“简易小画板”。⑵在解决方案资源管理器中,把“Form1.vb”改名为“frmGDIDemo.vb”。⑶打开窗体设计视图,选择窗体,在属性框中修改窗体属性:Name属性改为“frmGDIDemo”;StartPosition属性改为“CenterScreen”;Text属性改为“简易小画板”。9⑷为窗体添加PictureBox控件,Name属性改为“picHuaban”;添加Button控件,Name属性改为“btnString”,Text属性改为“绘制文字”。设计好的界面如图9-1所示:图9-1小画板程序框架10⑸双击窗体,在代码编辑器中添加Load事件响应代码,用于把picHuaban背景设置为白色:PrivateSubfrmGDIDemo_Load(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesMyBase.Load
picHuaban.BackColor=Color.WhiteEndSub11⑹双击“绘制文字”按钮,在代码编辑器中添加Click事件响应的代码:
PrivateSubbtnString_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesbtnString.Click'声明g为Graphics对象DimgAsGraphics'通过调用CreateGraphics方法,设置g为PictureBox控件的Graphics对象引用g=picHuaban.CreateGraphicsg.Clear(Color.White)
g.DrawString("欢迎进入GDI+的绘图世界!",NewFont("宋体",18),Brushes.Red,30,20)EndSub12本例中Graphics对象g的Clear()方法用来清除画布的表面,并给画布设定指定的颜色,DrawString()方法用来在Graphics对象上绘制指定的文本字符串,g的Dispose()方法用于释放画布所占用的内存空间。13提示:本例中使用到的(PictureBox)图片控件为VisualBasic2005主要的绘图控件,其提供了强大的功能及一整套的绘图方法,PictureBox
控件主要用于显示位图、GIF、JPEG、图元文件或图标格式的图形。主要的属性及说明如下:BackColor:用来设置PictureBox控件的背景色,基本语法:PictureBox1.BackColor=Color.Red14SizeMode:SizeMode属性用来设置PictureBox加载的图片,其摆放的位置方式,它有五个值:Normal(正常),代表将图片的左上角与控件的左上角对齐;StrechImage表示图像的大小将随控件的大小进行调整;AutoSize表示控件随图片的大小进行调整;CenterImage表示图片在控件内居中;Zoom表示自动按比例放大图片并显示在空间中。Image:窗体设计阶段通过Image属性设置PictureBox控件显示的图片,程序运行阶段通过FromFile方法调用图片:PictureBox1.image=system.drawing.Image.FromFile(“图片文件路径”)15运行程序,效果如图9-2所示:图9-2CreateGraphics方法示例16提示:例9-1中用到了DrawString()方法,它用于在指定位置用指定的Brush和Font对象绘制指定的文本字符串。其基本语法为:Object.DrawString(StringOfText,font,brush,x,y)参数说明:StringOfText:要绘制的文本;Font:绘制文本使用用的字体;Brush:绘制文本使用的画刷;x,y:绘制文本左上角的坐标值。17VisualBasic2005中,用户几乎可以在任何控件上绘图,用户甚至可以引用Button按钮的Graphics对象,如例9.2所示:例9.2新建Windows项目,添加按钮控件,并在按钮控件上进行绘图操作。示例代码如下:PrivateSubButton1_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesButton1.ClickDimgAsGraphics=Button1.CreateGraphicsg.DrawString("欢迎进入GDI+的绘图世界!",NewFont("宋体",12),Brushes.Red,30,20)EndSub18运行,单击按钮,将会在按钮的表面显示我们指定的文字,如图9-3所示图9-3Button1的CreateGraphics方法示例19提示:还可以通过Paint事件处理过程中的PaintEventArgs创建Graphics对象,在为控件编制Paint事件处理程序时,图形对象作为一个PaintEventArgs
提供,例9.3将对此进行演示说明。20例9.3演示了如何引用Paint事件的PaintEventArgs中的Graphics对象。具体操作为:双击Form1窗体,输入以下代码:PrivateSubForm1_Paint(ByValsenderAsObject,_ByValeAsSystem.Windows.Forms.PaintEventArgs)HandlesMe.Paint
DimgAsGraphics=e.Graphicsg.DrawString("欢迎进入GDI+的绘图世界!",NewFont("宋体",12),Brushes.Red,20,20)EndSub21运行后效果如图9-4所示:图9-4Paint事件中的Graphics对象22提示:在代码段的前两行,可以看到VisualBasic2005的每个事件处理过程都至少接收到两个参数:发送者对象(它是产生该事件的对象)和一个与该事件有关的对象(即EventArgs对象)。在本例中,e参数的类型是Windows.Forms.PaintEventArgs。当Graphics对象创建后,可用它绘制线条和形状、呈现文本或显示与操作图像。通常与Graphics对象一起使用的主体对象有以下几种:Pen类-用于绘制线条、勾勒形状轮廓或呈现其他几何表示形式。Brush类-用于填充图形区域,如实心形状、图像或文本。Font类-提供有关在呈现文本时要使用什么形状的说明。Color结构-表示要显示的不同颜色。239.3Graphics对象的常用方法24调用控件或窗体的Graphics对象的适当方法,可以在其表面进行绘图,常用的Graphics对象的方法如表9-2所示:25表9-2Graphics对象的常用方法Graphics方法名称说明所属命名空间DrawLine绘制一条连接两个Point结构的线System.DrawingDrawString
在指定矩形并且用指定的Brush和Font对象绘制指定的文本字符串System.DrawingDrawArc绘制一段弧线,它表示Rectangle结构指定的椭圆的一部分System.DrawingDrawRectangle绘制由坐标对、宽度和高度指定的矩形System.Drawing26提示:Graphics对象的方法都是重载的,即同一个方法具有不同的参数列表。如:DrawLine方法的重载列表。提示:Graphics对象的方法都是重载的,即同一个方法具有不同的参数列表。如:DrawLine方法的重载列表。27表9-3DrawLine方法的重载列表名称说明Graphics.DrawLine(Pen,Point,Point)绘制一条连接两个Point结构的线。Graphics.DrawLine(Pen,PointF,PointF)绘制一条连接两个PointF
结构的线。Graphics.DrawLine(Pen,Int32,Int32,Int32,Int32)绘制一条连接由坐标对指定的两个点的线条。由.NETCompactFramework支持。Graphics.DrawLine(Pen,Single,Single,Single,Single)绘制一条连接由坐标对指定的两个点的线条。289.4坐标系统绘图的各个方法中,都需要设置绘图的位置,所以了解VisualBasic2005的坐标系统变得十分有必要。C(200,100)B(0,100)A(200,0)O(0,0)图9-5VisualBasic2005坐标系统演示图29VisualBasic2005的坐标系统中,默认都是以象素(Pixel)为度量单位的。象素是指屏幕的亮点,如分辨率1024×768,是指屏幕上每行分布1024个象素点,每列分布768个象素点。每个象素都有一个坐标与之对应,(x,y)表示对象上某个象素点的坐标值,其中水平以x坐标值表示,垂直以y坐标值表示。VisualBasic2005中默认的坐标系如图9-5所示,其左上角的坐标为(0,0),垂直向下为正,水平向右为正。309.5Color对象在图像绘制中,颜色非常重要,VisualBasic2005的Color(颜色)对象用于表示不同的颜色。Color对象是表示特定颜色的类的实例,画笔和画刷可使用Color对象来指定所呈现图形的颜色。319.6系统定义的颜色VisualBasic2005中已定义了许多常用的Color颜色名称,可以直接引用,这些名称为英文,只需输入“color.”,VisualBasic2005就会以列表方式枚举出系统已定义的的颜色,选择即可,如图9-6所示。图9-6Color结构使用范例329.7用户定义的颜色除了可以使用系统已定义的颜色外,还可以使用Color.FromArgb()方法来实现用户自定义颜色。基本语法为:Color.FromArgb(Int32,Int32,Int32)33三个参数按顺序分别代表红色、蓝色和绿色各自的亮度,每个颜色值分别从0-255分了256个亮度,其中0表示没有该颜色,而255则为所指定颜色的完整饱和度,数值越大表示该颜色光越亮,如:Color.FromArgb(255,0,0)为红色,Color.FromArgb(0,255,0)为绿色,Color.FromArgb(0,0,255)为蓝色,Color.FromArgb(255,255,0)为黄色Color.FromArgb(255,255,255)为白色,颜色合成原理如图9-7所示。图9-7颜色演示349.8Pen对象Graphics画布对象上绘制线条、曲线以及勾勒形状轮廓。创建Pen对象的基本语法如下:DimpAsNewPen(颜色[,粗细])下面的代码演示创建画笔对象,并修改其属性:DimmyPenAsNewPen(Color.Blue,6)'创建名为myPen的的画笔对象,颜色为蓝色,粗细为6myPen.Color=Color.Red'画笔myPen的颜色修改为红色myPen.Width=8'画笔myPen的粗细修改为835例9.4在例9.1的基础上,继续完善小画板应用程序,添加绘制线条的功能。具体操作过程:⑴打开例9-1“简易小画板”项目,为窗体添加Button控件,Name属性改为“btnLine”,Text属性改为“绘制线条”。⑵双击“绘制线条”按钮,在代码编辑器中添加Click事件响应代码:36PrivateSubbtnLine_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesbtnLine.Click'声明g为Graphics对象,即选好画布
DimgAsGraphics=picHuaban.CreateGraphics'调用Graphics对象g的clear方法把画布清成白色
g.Clear(Color.White)
'声明颜色变量,并调用FromAgrb方法进行初始化
DimmyColorAsColor
myColor=Color.FromArgb(100,100,100)
'声明画笔对象,并设置其颜色及粗细变量
DimmPenAsNewPen(myColor,5)
'调用Graphics对象g的DrawLine方法绘制线条
g.DrawLine(mPen,20,30,300,30)37
'修改画笔对象的颜色机粗细,并重新绘制线条
mPen.Color=Color.Red
mPen.Width=8
g.DrawLine(mPen,20,60,350,60)
'释放Graphics对象g占用的内存空间
g.Dispose()
EndSub38提示:本例中使用到的DrawLine()方法主要用于在给定的两个端点之间绘制线条。其基本语法如下:Object.DrawLine(Pen对象,x1,y1,x2,y2)Object用于绘制的Graphics对象Pen对象用来绘画的画笔对象x1,y1线条的起点坐标x2,y2线条的终点坐标39运行,单击“绘制线条”按钮,运行结果如图9-8所示:图9-8绘制线条示例40例9.5在例9.4的基础上,继续完善小画板应用程序,添加绘制矩形的功能。具体操作过程:⑴打开例9-4“简易小画板”项目,为窗体添加Button控件,Name属性改为“btnRectangle”,Text属性改为“绘制矩形”。⑵双击“绘制矩形”按钮,在代码编辑器中添加Click事件响应代码:例9.5在例9.4的基础上,继续完善小画板应用程序,添加绘制矩形的功能。具体操作过程:⑴打开例9-4“简易小画板”项目,为窗体添加Button控件,Name属性改为“btnRectangle”,Text属性改为“绘制矩形”。⑵双击“绘制矩形”按钮,在代码编辑器中添加Click事件响应代码:41PrivateSubbtnRectangle_Click(ByValsenderAsSystem.Object,_
ByValeAsSystem.EventArgs)HandlesbtnRectangle.ClickDimgAsGraphics=picHuaban.CreateGraphics
g.Clear(Color.White)DimmyColorAsColor
myColor=Color.OrangeDimmPenAsNewPen(myColor)
mPen.Color=Color.Red
mPen.Width=942
'使用DrawRectangle()方法来正方形,正方形左上角坐标为(50,30),宽和高都是80
g.DrawRectangle(mPen,50,30,80,80)
'修改画笔对象的颜色及粗细,并重新调用DrawRectangle方法绘制矩形
mPen.Color=Color.Black
mPen.Width=3
g.DrawRectangle(mPen,180,30,200,80)
g.Dispose()
EndSub43提示:本例中使用到的DrawRectangle()方法主要用于绘制矩形。其基本语法如下:Object.DrawRectangle(Pen对象,x1,y1,width,height)Object:用于绘制的Graphics对象;Pen对象:用来绘画的画笔对象;x1,y1:矩形的左上角坐标;width:矩形的宽度;height:矩形的高度.44运行,单击“绘制矩形”按钮,运行结果如图9-9所示图9-9绘制矩形示例45例9.6在例9.5的基础上,为小画板添加绘制圆形及椭圆的的功能。具体操作过程:⑴打开例9-5“简易小画板”项目,为窗体添加Button控件,Name属性改为“btnEllipse”,Text属性改为“绘制圆形(椭圆)”。⑵双击“绘制圆形(椭圆)”按钮,在代码编辑器中添加Click事件响应代码:46PrivateSubbtnEllipse_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesbtnEllipse.ClickDimgAsGraphics=picHuaban.CreateGraphics
g.Clear(Color.White)DimmyColorAsColor
myColor=Color.RedDimmPenAsNewPen(myColor,3)47
'调用DrawRectangle()方法来正方形,正方形左上角坐标为(10,20),宽和高设置为100
g.DrawRectangle(mPen,10,20,100,100)
'调用DrawEllipse()方法来画正圆,正圆所处矩形的左上角坐标为(10,20),宽和高设置为100
g.DrawEllipse(mPen,10,20,100,100)
'定义Rectangle(矩形)结构,该结构存储一组整数,共四个,表示一个矩形的位置和大小
DimrAsRectangler=NewRectangle(140,20,100,100)'调用DrawEllipse()方法来画正圆,正圆的形状由已定义的Rectangle结构来决定
g.DrawEllipse(mPen,r)
'调用DrawEllipse()方法来画椭圆,椭圆所处矩形的左上角坐标为(270,20)g.DrawEllipse(mPen,270,20,150,100)g.Dispose()EndSub48运行,单击“绘制圆形(椭圆)”按钮,运行结果如图9-10所示:图9-10绘制圆形及椭圆示例49提示:椭圆可以被看作一个正圆为适合一个矩形而产生形变的结果,矩形的宽和高分别代表了椭圆的长轴和短轴,椭圆的位置由所处的矩形的左上角坐标决定。正圆是椭圆的一种特殊形式(长轴等于短轴)。50本例中使用到的DrawEllipse()方法主要用于绘制椭圆或者正圆。其基本形式有两种:Object.DrawEllipse(Pen对象,x1,y1,width,height)Object.DrawEllipse(Pen对象,rectangle)第一种参数形式与例10.5中介绍的DrawRectangle()方法是一致的,其参数意义同DrawRectangle()方法。第二种参数形式中,使用到了rectangle(矩形)结构,该结构存储了一组整数,共四个,分别表示一个矩形的位置、宽及高,即绘制由矩形结构定义的椭圆。519.9Brush对象Brush是画刷对象,是填充图形的工具,用于与Graphics对象一起创建实心形状和呈现文本的对象。实际上没有Brush对象,Brush只是一个抽象类,它可被所有实现画刷的类所继承。几种不同的画刷对象如表9-4所示:52表9-4几种画刷对象说明画刷对象说明SoliBrush画刷的最简单形式,它用纯色进行绘制HatchBrush选择系统预设的图案进行绘制TextureBrush使用纹理(如图像)进行绘制LinearGradientBrush使用沿渐变混合的两种颜色进行绘制PathGradientBrush基于开发人员定义的唯一路径,使用复杂的混合色渐变进行绘制53创建单色画刷(SoliBrush)的语法如下:
DimsBrushAsSolidBrush
sBrush=NewSolidBrush(颜色)下面的示例代码创建单色画刷对象,并修改其属性:DimsBrushAsNewSolidBrush(Color.Blue)'创建名为sBrush的的单色画刷对象,颜色为蓝色sBrush.Color=Color.Red'画刷sBrush的颜色改为红色创建系统预设图案画刷(HatchBrush)的语法如下:
DimhBrushAsHatchBrush
hBrush=NewHatchBrush(hatchStyle枚举样式,前景色[,背景色])54提示:预设图案的HatchStyle枚举样式有54个成员,表9-5列出了几种典型样式,更多样式说明可查HatchStyle枚举相关帮助获取详细信息。55表9-5几种典型的HatchStyle枚举样式成员名称说明BackwardDiagonal从右上到左下的对角线的线条图案。OutlinedDiamond指定互相交叉的正向对角线和反向对角线,但这些对角线不是锯齿消除的。Shingle指定带有对角分层鹅卵石外观的阴影,它从顶点到底点向右倾斜。Cross指定交叉的水平线和垂直线。Horizontal水平线的图案。56提示:预设图案的HatchStyle枚举样式在System.Drawing.Drawing2D命名空间中定义,使用前必须导入该命名空间,具体操作如下:1.在“解决方案资源管理器”中,双击项目的“MyProject”节点。2.在“项目设计器”中,单击左侧“引用”选项卡。3.在“导入的命名空间”列表中,选中命名空间“.Drawing2D”对应的复选框。注:如果命名空间“System.Drawing.Drawing2D”没有出现在列表中,则点击该窗口中的“添加(A)…”按钮,在弹出的“添加引用”对话框中选择“.NET”选项卡,选择“System.Drawing”,并点击“确定”即可。57例9.7在例9.6的基础上,使用单色Brush对象和预设图案样式的Brush对象,进行各种图形的填充。具体操作过程:⑴打开例9-6“简易小画板”项目,为窗体添加Button控件,Name属性改为“btnSBrush”,Text属性改为“单色画刷”;添加Button控件,Name属性改为“btnHBrush”,Text属性改为“预设图案画刷”。⑵双击“单色画刷”按钮,在代码编辑器中添加Click事件响应代码:58PrivateSubbtnSBrush_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesbtnSBrush.ClickDimgAsGraphics=picHuaban.CreateGraphics
g.Clear(Color.White)
'创建一支红色的画刷对象
DimsBrushAsSolidBrush
sBrush=NewSolidBrush(Color.Red)
'调用FillEllipse()方法填充图形
g.FillEllipse(sBrush,40,20,100,100)
'更改画刷对象sBrush的颜色,并调用FillEllipse()方法填充图形
sBrush.Color=Color.FromArgb(120,200,100)
g.FillEllipse(sBrush,220,20,160,100)
g.Dispose()EndSub59运行,单击“单色画刷”按钮,运行结果如图9-11所示:60提示:本例中使用到的FillEllipse()方法主要用于填充边框所定义的椭圆的内部。其基本形式有两种:Object.DrawEllipse(Brush对象,x1,y1,width,height)Object.DrawEllipse(Brush对象,rectangle)FillEllipse()方法两种常用形式的参数意义参考例9-6。61⑶双击“预设图案画刷”按钮,在代码编辑器中添加Click事件响应代码:PrivateSubbtnHBrush_Click(ByValsenderAsSystem.Object,_ByValeAsSystem.EventArgs)HandlesbtnHBrush.ClickDimgAsGraphics=picHuaban.CreateGraphics
g.Clear(Color.White)
'创建预设图案的画刷对象,并设置其预设的图案样式
DimhBrushAsHatchBrush
hBrush=NewHatchBrush(HatchStyle.OutlinedDiamond,Color.Red,Color.Blue)62
'调用FillRectangle()方法填充图形
g.FillRectangle(hBrush,40,20,100,100)
'更改画刷对象sBrush的预设图案样式,并调用FillRectangle()方法填充图形
hBrush=NewHatchBrush(HatchStyle.DiagonalBrick,Color.White)
g.FillRectangle(hBrush,220,20,160,100)g.Dispose()
EndSub63运行,单击“预设图案画刷”按钮,运行结果如图9-12所示:图9-12预设图案画刷演示64提示:本例中使用到的FillRectangle()方法主要用于填充矩形的内部。其基本形式有两种:Object.FillRectangle(Brush对象,x1,y1,width,height)FillRectangle()方法的参数意义参考例9-5。65例9.8本例中将完成手动画图功能,可以设定画笔的粗细及颜色。说明:通过调整HscrollBar控件设置画笔的粗细,通过按钮“设定颜色”调用ColorDialog来设置画笔的颜色,调用MouseDown,MouseMove事件进行任意图形的绘制。66具体操作过程:⑴新建项目,选择“Windows应用程序”,项目名称为“手动画板”,为窗体添加Label控件,修改其Text属性为“画笔粗细=1”;添加HScrollBar控件,修改其Name属性为“penScrollBar”,Minimum属性为1,Maximum属性改为15,LargeChange属性改为。67⑵在窗体中间部分添加PictureBox控件,Name属性改为“picHuaban”;窗体下方添加Button控件,Name属性改为“btnColor”,Text属性改为“设定颜色”;再添加一个Button控件,Name属性改为“btnClear”,Text属性改为“清空画板”;在窗体上放置一个ColorDialog控件。设计好的界面类似图9-13。图9-13手动画板68⑶代码编辑器中,声明几个变量,代码如下:
'定义画笔的颜色变量
DimpenColorAsColor'定义画笔的粗细变量
DimcAsInteger'定义坐标变量
Dimx,yAsInteger69⑷在窗体空白处双击进入代码编辑窗口,添加如下代码:PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByVale_AsSystem.EventArgs)HandlesMyBase.Load'设定画板背景
picHuaban.BackColor=Color.White'设定笔的默认颜色
penColor=Color.Redc=1EndSub70⑸在按钮“设定颜色”上双击进入代码编辑窗口,添加如下代码:PrivateSubbtnColor_Click(ByValsenderAsSystem.Object,ByVale_AsSystem.EventArgs)HandlesbtnColor.Click'调用ColorDialog1.ShowDialog()方法调出“颜色”对话框
ColorDialog1.ShowDialog()'用ColorDialog的Color属性设置画笔的颜色
penColor=ColorDialog1.ColorEndSub71⑹在ScrollBar控件上双击进入代码编辑窗口,添加如下代码:
PrivateSubpenScrollBar_Scroll(ByValsenderAsSystem.Object,ByValeAsSystem.Windows.Forms.ScrollEventArgs)HandlespenScrollBar.Scroll'设定Label1的Text属性
Label1.Text="画笔粗细="&penScrollBar.Value.ToStringEndSub72⑺在代码编辑窗口上方的对象列表中选择“picHuaban”,然后在右侧的事件列表选择”MouseDown”,为“picHuaban_MouseDown”过程添加代码如下:
PrivateSubpicHuaban_MouseDown(ByValsenderAsObject,ByValeAsSystem.Windows.Forms.MouseEventArgs)HandlespicHuaban.MouseDown'当鼠标被按下,记录鼠标指针坐标值
x=e.Xy=e.YEndSub73⑻在代码编辑窗口上方的对象列表中选择“picHuaban”,然后在右侧的事件列表选择“MouseMove”,为“picHuaban_MouseMove”过程添加代码如下
PrivateSubpicHuaban_MouseMove(ByValsenderAsObject,ByValeAs_System.Windows.Forms.MouseEventArgs)HandlespicHuaban.MouseMoveIfe.Button=Windows.Forms.MouseButtons.LeftThenDimgAsGraphics=picHuaban.CreateGraphicsDimpAsNewPen(penColor,penScrollBar.Value)'在MouseMove事件中,鼠标左键被按下时,执行DrawLine方法进行绘图
g.DrawLine(p,x,y,e.X,e.Y)'释放g所占用的内存
g.Dispose()x=e.Xy=e.YEndIfEndSub74⑼在按钮“清空画板”上双击进入代码编辑窗口,添加代码如下:
PrivateSubbtnClear_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_HandlesbtnClear.ClickDimgAsGraphics=picHuaban.CreateGraphics
g.Clear(Color.White)EndSub759.10综合实例例9.9画一个饼状图及其直方图,用来统计学生成绩分布情况,计算及格率,良好率,优秀率等。(0-59,60-84,85-100)程序运行效果如图9-14、9-15所示:图9-14统计图示例一76图9-15统计图示例二77具体操作过程:⑴新建项目,选择“Windows应用程序”,项目名称为“统计图”。⑵参照图9-14,为窗体添加控件。添加4个Label控件,Text属性分别为“学生考试成绩统计”、“不及格人数(<60)”、“良好人数(>=60并且<85)”、“优秀人数(>=85)”。⑶添加3个TextBox,Name属性分别为“txtNopass”、“txtNormal”、“txtGood”。添加3个Label控件,其Name及Text属性分别为:“lblNopass”、“不及格率:”;“lblNormal”、“良好率:”;“lblGood”、“优秀率:”。⑷添加三个Button控件,其Name及Text属性分别为:“btnStat”,“统计”;“btnBarGraph”、“画直方图”;“btnPieChart”、“画饼状图”。⑸添加一个PictureBox控件,Name为“picGraph”。78⑹代码编辑器中,声明几个变量,代码如下:
'变量y1,y2,y3分别代表及格率,良好率,优秀率
Dimy1,y2,y3AsSingle '定义画笔对象用来画坐标轴
DimpAsNewPen(Color.Black,3) '定义三个画刷对象用来填充直方图和饼图
Dimbr1AsNewSolidBrush(Color.Red) Dimbr2AsNewSolidBrush(Color.Yellow) Dimbr3AsNewSolidBrush(Color.Orange)79⑺在窗体空白处双击进入代码编辑窗口,添加如下代码:
PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handles_MyBase.Load
picGraph.BackColor=Color.WhiteEndSub80⑻在按钮“统计”上双击进入代码编辑窗口,添加代码如下:
PrivateSubbtnStat_Click(ByValsenderAsSystem.Object,ByVale
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度桶装水品牌形象设计与宣传推广合同
- 《房屋买卖双方调解协议》
- 机制纸及纸板企业ESG实践与创新战略研究报告
- 二零二五年度酒店专用烟酒一站式供货合同
- 玻璃纤维增强塑料坐具企业数字化转型与智慧升级战略研究报告
- 2025年度酒店泳池安全免责协议及游客须知
- 二零二五年度地下室土地使用权及开发权转让合同
- 二零二五年度离婚协议书:情感纠葛解除与财产权益保障协议
- 媒体培训合作协议
- 二零二五年度知识产权转让购销合同
- 基本养老保险个人权益记录范文单
- 排球正面双手垫球教案教学设计
- 【23精品】苏少小学美术三下教案全册
- 房屋租赁(出租)家私清单
- 计算机技术硕士专业学位授权点申报研究演示课件(PPT 39页)
- 剪纸艺术-认识剪纸
- 驾驶员违规违章学习记录表
- 简易瞬态工况法1
- 中国铁路总公司环境保护管理办法(铁总计统〔2015〕260号)
- 技术分析介绍教程课件
- 汽车新能源汽车产业专利趋势分析
评论
0/150
提交评论