第8章图形应用程序设计ppt课件(全).pptx

上传人:知****量 文档编号:71811297 上传时间:2023-02-06 格式:PPTX 页数:44 大小:559.77KB
返回 下载 相关 举报
第8章图形应用程序设计ppt课件(全).pptx_第1页
第1页 / 共44页
第8章图形应用程序设计ppt课件(全).pptx_第2页
第2页 / 共44页
点击查看更多>>
资源描述

《第8章图形应用程序设计ppt课件(全).pptx》由会员分享,可在线阅读,更多相关《第8章图形应用程序设计ppt课件(全).pptx(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、VB.NETVB.NET程序设计实训教程程序设计实训教程第第8 8章章 图图形形应应用程序用程序设计设计8.1 GDI+基础8.2 VB.Net中的坐标系统8.3 基本绘图方法8.4 图像处理8.5实训练习88.1 8.1 GDI+GDI+基础基础8.1.1 GDI+的的组组成成GDI+包含在集合中,共有54个类,隶属于System.Drawing、System.Text、System.Drawing2D等六个命名空间,如表8-1所示。表8-1GDI+的命名空间命名空间说明System.Drawing包括基本的图形功能,如绘图、画笔、颜色、画刷、字体System.Text高级字体功能Syste

2、m.Drawing.Drawing2D包括高级矢量图和光栅功能System.Drawing.Imaging包括高级图像功能System.Drawing.Printing包括打印和打印预览功能System.Drawing.Design包括自定义控件扩展设计时用户界面(UI)逻辑和绘制的类表8-2GDI+常用图形处理类类名说明Graphics类用于绘制直线、矩形、路径和其它图形的方法(类似于GDI中的CDC类)Pen类存储有关线条颜色、线条粗细和线型的信息Brush类存储有关如何使用颜色或图案来填充封闭图形和路径的信息Font类存储有关文本字体样式、旋转等信息Icon类处理图形的各种结构,如Poi

3、nt结构、Rectangle结构8.1.2 GDI+的功能与特性的功能与特性1.GDI+的功能GDI+主要提供了以下三种功能。(1)二维矢量图形矢量图形包括坐标系统中的系列点指定的绘图基元(如直线、曲线和图形)。例如,直线可通过它的两个端点来指定,而矩形可通过确定其左上角位置的点并给出其宽度和高度的一对数字来指定。(2)图像处理图像可存储为位图,即代表屏幕上单个点颜色的数字数组。(3)文字显示版式使用各种字体、字号和样式来显示文本。2.GDI+新增特性(1)渐变画刷渐变画刷(gradientbrush梯度刷)通过提供用于填充图形、路径和区域的线性渐变画刷和路径渐变画刷,GDI+扩展了GDI的功

4、能。渐变画刷还可用于绘制直线、曲线和路径。(2)基数样条函数基数样条是一连串单独的曲线,这些曲线连接起来形成一条较长的光滑曲线。样条由点的数组指定,并通过该数组中的每一个点。基数样条平滑地(没有锐角)通过数组中的每一个点,因此,比通过连接直线创建的路径更光滑精准。(3)持久路径对象在GDI中,路径属于设备上下文,并且会在绘制时被毁坏。利用GDI+,绘图由Graphics对象执行,可以创建并维护几个与Graphics对象分开的持久的路径对象(persistentpathobject)GraphicsPath对象。绘图操作不会破坏GraphicsPath对象,因此可以多次使用同一个Graphics

5、Path对象来绘制路径。(4)变换和矩阵对象GDI+提供了Matrix(矩阵)对象,它是一种可以使缩放、旋转和平移等变换更简易灵活的强大工具。矩阵对象一般与变换对象联合使用。(5)可伸缩区域在GDI中,区域被存储在设备坐标中,而且,可应用于区域的惟一变换是平移。而GDI+在全局坐标中存储区域,并且允许区域发生任何可存储在变换矩阵中的变换,如缩放和旋转。(6)混色GDI+支持的混色(AlphaBlending,透明混合),使用混色,可以指定填充颜色的透明度。(7)丰富的图像格式支持3.创建创建图形应用程序在VB.NET中,绘制图形需要指定绘图表面,例如,窗体、PictureBox控件等。实际上,

6、所有具有Text属性的控件都可以都可以作为绘图表面。使用GDI+绘制图形的一般过程为:(1)选择绘图表面,创建画布对象Graphics。(2)建立绘图工具,指定绘图所用画笔、画刷等。(3)调用绘图方法绘制图形。(4)调用dispose方法释放绘图对象。【例8-1】在窗体和按钮上分别画两个圆形。结果如图8-1所示。PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.ClickDimgAsGraphics=Button1.CreateGraphicsDimmypenAsPen=NewPen(Color.Red,2)g

7、.DrawEllipse(mypen,20,20,50,50)g.Dispose()EndSubPrivateSubForm1_Click(senderAsObject,eAsEventArgs)HandlesMyBase.ClickDimgAsGraphics=Me.CreateGraphicsDimmypenAsPen=NewPen(Color.Red,2)g.DrawEllipse(mypen,15,15,50,50)g.Dispose()EndSub8.1.3 画布对象画布对象Graphics1.创建画布对象创建Graphics对象有以下几种方法。(1)使用窗体或控件的CreateGr

8、aphics方法创建Graphics对象其格式为:Dim对象名AsGraphics对象名=窗体名(或控件名).CreateGraphics例如,在窗体上添加按钮button1,单击按钮时在窗体上画一条红色直线,代码为:PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.ClickDimgAsGraphics=Me.CreateGraphics利用窗体的CreateGraphics方法创建Graphics对象DimmypenAsPen=NewPen(Color.Red,2)g.DrawLine(mypen,100,

9、100,10,10)EndSub如果在窗体上再添加PictureBox控件,单击按钮时在控件上画一条红色直线,代码为:PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.Click利用控件PictureBox1的CreateGraphics方法创建Graphics对象DimmypenAsPen=NewPen(Color.Red,2)g.DrawLine(mypen,100,100,10,10)EndSub(2)利用PaintEventArgs参数传递Graphics对象在为窗体或控件编写Paint事件处理程序时,

10、参数PaintEventArgs中包含了Graphics对象,可以通过窗体或控件的Paint事件直接完成图形绘制。例如:PrivateSubForm1_Paint(senderAsObject,eAsPaintEventArgs)HandlesMyBase.PaintDimgAsGraphics=e.Graphics通过PaintEventArgs参数提供Graphics对象DimmypenAsPen=NewPen(Color.Red,2)g.DrawLine(mypen,100,100,10,10)EndSub(3)利用Image的派生类创建Graphics对象如果程序中已经创建了Image

11、对象,还可以使用Image对象来创建Graphics对象,这时要使用Graphics.FromImage方法。而Image对象(Image变量)则作为该方法的参数。例如,下列代码中myBitmap是一个位图对象,在创建Graphics对象的语句中,它是FromImage方法的参数。DimmyBitmapasNewBitmap(E:VBaa.bmp)DimgasGraphics=Graphics.FromImage(myBitmap)2.Graphics对象的方法表8-3Graphics类的常用方法及作用名称说明名称说明DrawArc画弧DrawBezier画立体的贝尔塞曲线DrawBezier

12、s画连续立体的贝尔塞曲线DrawClosedCurve画闭合曲线DrawCurve画曲线DrawEllipse画椭圆DrawImage画图像DrawLine画线DrawPath通过路径画线和曲线DrawPie画饼形DrawPolygon画多边形DrawRectangle画矩形DrawString绘制文字FillEllipse填充椭圆FillPath填充路径FillPie填充饼图FillPolygon填充多边形FillRectangle填充矩形FillRectangles填充矩形组FillRegion填充区域8.1.4 几种常用画几种常用画图对图对象象1Color(颜色)结构在GDI+中,通过C

13、olor结构封装对颜色的定义,。DimmyColorasColormyColor=Color.RedmyColor=Color.AquamarinemyColor=Color.LightGoldenrodYellowmyColor=Color.PapayaWhipmyColor=Color.Tomato表8-4颜色的基本属性名称说明A获取此Color结构的Alpha分量值,取值(0255)R获取此Color结构的红色分量值,取值(0255)G获取此Color结构的绿色分量值,取值(0255)B获取此Color结构的蓝色分量值,取值(0255)Name获取此Color结构的名称,这将返回用户定义

14、的颜色的名称或已知颜色的名称(如果该颜色是从某个名称创建的)。对于自定义的颜色,这将返回RGB值。表8-5颜色的基本(静态)方法名称说明FromArgb从四个8位的ARGB分量(Alpha、红色、绿色和蓝色)值创建Color结构FromKnowColor从指定饿预定义颜色创建一个Color结构FromName从预定义颜色的指定名称创建一个Color结构。除了系统颜色外,用户可以自定义颜色,即使用Color结构的FromArgb方法定义需要的颜色,例如:Colorcolor1=Color.FromArgb(96,06,25);2画笔Pen对象画笔通常用来绘制线条、曲线以及勾勒形状轮廓。它是Pen

15、类的实例,下面的示例说明如何创建一支红色的笔:DimmyPenasNewPen(Color.Red)表8-6Pen常用属性名称说明Alignment画笔的对齐方式Color画笔的颜色Brush获得或者设置画笔的属性Width画笔的宽度DashStyle画笔的线型,包括实线、虚线、点线等SetDashPattern可以使用一个预定义的数组来描述画笔的虚实,这个数组的格式为:画线部分长度,间隔部分长度,画线部分长度,间隔部分长度其中,线型DashStyle是用一个枚举类型数据定义的,具体定义为:enumDashStyleDashStyleSolid=0,/实线DashStyleDash=1,/虚线

16、DashStyleDot=2,/点线DashStyleDashDot=3,/点划线DashStyleDashDotDot=4,/双点划线DashStyleCustom=5/自定义线型;此外,在导入命名空间System.Drawing.Drawing2D后,可以设置线条首尾的样式,而不是一律采用默认的方形。对于起点,使用SetStartCap设置,对于终点,可以使用SetEndCap来完成。3画刷由于Brush类是一个抽象的基类,因此它不能被实例化。要实例化一个画刷对象时,只能用它的派生类进行,画刷一般用于对图形内部进行填充操作。表8-7画刷类型名称说明SolidBrush画刷的最简单形式,它用

17、纯色进行绘制。HatchBrush类似于SolidBrush,但是该类使您可以从大量预设的图案中选择绘制时要使用的图案,而不是纯色。TextureBrush使用纹理(如图像)进行绘制。LinearGradientBrush使用沿渐变混合的两种颜色进行绘制。PathGradientBrush基于开发人员定义的唯一路径,使用复杂的混合色渐变进行绘制【例8-2】:用四种不同画刷在窗体上绘制四个圆形。程序运行结果如图8-2所示。PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.ClickDimgAsGraphics=M

18、e.CreateGraphicsDimmyBrushAsNewSolidBrush(Color.Green)g.FillEllipse(myBrush,NewRectangleF(0,0,100,100)EndSubPrivateSubButton2_Click(senderAsObject,eAsEventArgs)HandlesButton2.ClickDimgAsGraphics=Me.CreateGraphicsDimmyBrushAsNewSystem.Drawing.Drawing2D.HatchBrush(System.Drawing.Drawing2D.HatchStyle.P

19、laid,Color.Red,Color.Blue)g.FillEllipse(myBrush,NewRectangleF(110,0,100,100)EndSubPrivateSubButton3_Click(senderAsObject,eAsEventArgs)HandlesButton3.ClickDimgAsGraphics=Me.CreateGraphicsDimmyBrushAsNewSystem.Drawing.Drawing2D.LinearGradientBrush(ClientRectangle,Color.Red,Color.LightYellow,System.Dra

20、wing.Drawing2D.LinearGradientMode.Horizontal)g.FillEllipse(myBrush,NewRectangleF(230,0,100,100)EndSubPrivateSubButton4_Click(senderAsObject,eAsEventArgs)HandlesButton4.ClickDimgAsGraphics=Me.CreateGraphicsDimmyBrushAsNewTextureBrush(NewBitmap(E:vb例题aa.bmp)g.FillEllipse(myBrush,NewRectangleF(340,0,10

21、0,100)EndSub4Font类Font类用于定义文本的格式,包括字体、字号和字形属性。Font类的常用构造函数是:PublicFont(String字体名,Float字号,FontStyle字形)其中字号和字体为可选项。具体应用时,可以按下列格式进行实例化:Dim字体对象AsNewFont(名称,大小,样式,量度单位)表8-8字体字体常用属性名称说明名称说明Bold是否为粗体FontFamily字体成员Height字体高Italic是否为斜体Name字体名称Size字体尺寸SizeInPoints获取此Font对象的字号,以磅为单位Strikeout是否有删除线Style字体类型Unde

22、rline是否有下划线Unit字体尺寸单位使用New子句初始化二维数组的格式为:Dim数组名(,)As数据类型1=New数据类型2(下标1上界,下标2上界)第1行元素初值序列,第2行元素初值序列,.,第m行元素初值序列例如,DimarrA(,)AsInteger=NewInteger(,)1,2,3,4,5,6,7,8,9,10,11,12DimarrA(,)AsInteger=NewInteger(2,3)1,2,3,4,5,6,7,8,9,10,11,12(2)二维数组的整体赋值对已定义的m行n列二维数组,整体赋值格式为:数组名=第1行元素初值序列,第2行元素初值序列,.,第m行元素初值序

23、列其中每一行的初值序列都包含n个数值。例如:DimarrA(2,3)AsIntegerarrA=1,2,3,4,5,6,7,8,9,10,11,128 8.2 VB.NET2 VB.NET中的坐标系统中的坐标系统8.2.1 GDI+三种坐三种坐标标系系统统GDI+使用三种坐标系统,包括世界坐标系、页面坐标系和设备坐标系。(1)世界坐标(WorldCoordinate)是用来制作特定绘图自然模型的坐标。(2)页面坐标(PageCoordinate)是指在窗体或控件等绘图接口上使用的坐标系。(3)设备坐标(DeviceCoordinate)是指是指显示设备或打印设备坐标系下的坐标,如绘图所用屏幕或

24、纸张的坐标系。8.2.2 坐坐标变换标变换GDI+默认的坐标系统,与我们习惯的一般坐标系不同,所以,在屏幕上绘图之前,需要先进行一系列坐标变换。画布对象Graphics提供了以下三个常用的坐标变换方法,可以很方便地进行坐标变换。(1)改变坐标原点位置:.TranslateTransform(x,y)坐标原点移到点(x,y)处(2)改变坐标系的X、Y轴方向:.ScaleTransform(1,-1)x轴方向不变,y轴反向,如果参数绝对值不取1,还可以根据所取数值进行相应坐标的放大或缩小处理。(3)旋转坐标系的角度:.RotateTransform(-30)原坐标系顺时针旋转30度,若参数为负,表

25、示顺时针旋转,参数为正,表示逆时针旋转。【例8-3】坐标变换,效果如图8-3所示。图8-3中坐标轴倾斜的坐标系,是将原页面坐标系的原点平移到点(150,110)处,再将y轴变为相反方向,最后再绕着原点顺时针旋转了30度,坐标变换代码为:g.TranslateTransform(150,110)g.ScaleTransform(1,-1)。g.RotateTransform(-30)。8 8.3 3 基本基本绘图绘图方法方法8.3.1 画直画直线线1DrawLine方法已知两个点的坐标(x1,y1),(x2,y2)画直线,具体形式为:DrawLine(pen,x1,y1,x2,y2)如果两个点用

26、Point结构表示,则使用格式为:DrawLine(pen,Point1,Point2)例如:要在PictureBox控件表面绘制一条蓝色直线,代码为:DimmpenAsNewPen(Color.Blue)g.DrawLine(mpen,0,0,100,200)其中,最后一条语句也可以使用如下代码替换。Dimp1AsPoint=NewPoint(0,0)Dimp2AsPoint=NewPoint(100,200)g.DrawLine(mpen,p1,p2)2DrawLines方法该方法可以绘制由若干条线段连接起来的折线,DrawLines的形式如下:DrawLines(Pen,Point()P

27、oint()参数就一个由一系列的点构成的数组。例如,下代码将在PictureBox控件中绘制一条由四个不同的坐标点依次连线构成的图形。代码为:DimmpenAsNewPen(Color.Red)DimPointsAsPoint()=NewPoint(0,0),NewPoint(80,50),NewPointF(120,30),NewPoint(60,100)定义数组Points,用于保存四个点g.DrawLines(mpen,points)画折线8.3.2 画弧画弧线线用DrawArc方法可以画一段椭圆弧,具体格式为:DrawArc(Pen,x,y,Swidth,height,StartAng

28、le,SweepAngle)其中x,y,Swidth,height这四个参数指定了椭圆的结构StartAngle为椭圆弧的起始角度,该角度是在指以椭圆的中心为坐标原点、X轴向右为正方向的坐标系中,圆弧起点与X轴的夹角。SweepAngle为圆弧扫过的角度值,以StartAngle参数所指定的起点沿顺时针方向扫过的度数。例如,以下代码可以画一个弧度在30度-120度之间的弧线。DimmpenAsNewPen(Color.Red)g.DrawArc(mpen,0.0F,0.0F,100.0F,100.0F,30.0F,120.0F)运行效果为:8.3.3 画画椭圆椭圆1DrawEllipse方法使

29、用DrawEllipse方法可以绘制一个由矩形边框定义的椭圆,该边框是由椭圆的左上角坐标,高度以及宽度决定的。DrawEllipse方法的常用形式:DrawEllipse(x,y,width,height)其中,x,y为椭圆的左上角坐标点,width为椭圆的外接矩形的宽,height为椭圆的外接矩形的高。当width、height相等时,绘制的是圆形。例如,下列代码可以在PictureBox控件中绘制一个红色的椭圆。PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1

30、.ClickDimmpenAsNewPen(Color.Red)g.DrawEllipse(mpen,0,0,180,150)EndSub2FillEllipse方法画填充椭圆如果绘图工具选用画刷,使用FillEllipse可以画填充椭圆,例如,下列代码可以绘制一红色填充椭圆,结果如图8-6所示。PrivateSubForm1_Paint(senderAsObject,eAsPaintEventArgs)HandlesMyBase.PaintDimgAsGraphics=Me.CreateGraphicsDimmybrushAsNewSolidBrush(Color.Red)g.FillEll

31、ipse(mybrush,20,20,180,120)EndSub8.3.4 画矩形画矩形1DrawRectangle方法使用DrawRectangle方法可以绘制一个由左上角(x1,y1)和右下角(x2,y2)两个点确定的矩形。DrawRectangle方法的常用形式:DrawRectangle(x1,y1,x2,y2)参数中的四个坐标可以用Point类的对象表示。例如,下列代码可以窗体中绘制一个红色的矩形:DimgAsGraphics=Me.CreateGraphicsDimmpenAsNewPen(Color.Red)g.DrawRectangle(mpen,0,0,250,150)2D

32、rawRectangles使用DrawRectangles方法可以绘制一组矩形,具体格式为:DrawRectangles(penAsPen,rectsAsRectangle())Rectangle为结构数组,这些结构数组元素表示要绘制的矩形。3FillRectangle方法画填充矩形使用FillRectangle方法可以绘制填充形,画填充图形首先要选画刷类型。例如,DimmybrushAsNewHatchBrush(HatchStyle.DiagonalCross,Color.Red,Color.Blue)g.FillRectangle(mybrush,0,0,250,150)4FillRec

33、tangles方法画填充矩形组选择画刷样式,用FillRectangles方法画填充矩形组。例如,下列代码可以画三个矩形例如,下列代码可以画三个矩形。DimrectsAsRectangle()=NewRectangle(0,0,50,100),NewRectangle(50,100,100,50),NewRectangle(150,40,100,80)DimmybrushAsNewHatchBrush(HatchStyle.DiagonalCross,Color.Red,Color.Blue)g.FillRectangles(mybrush,rects)8.3.5 画扇形画扇形1DrawPie

34、方法使用DrawPie方法可以绘制一个由左上角(x1,y1)和右下角(x2,y2)两个点确定的矩形。DrawPie方法的常用形式:DrawPie(0,0,100,100,30,120)例如,下代码可以在窗体中绘制一个红色的扇形。DimgAsGraphics=Me.CreateGraphicsDimmpenAsNewPen(Color.Red,3)g.DrawPie(mpen,0,0,100,100,30,120)2FillPie方法使用FillEllipse画填充扇形,例如,下代码可以在窗体中绘制一个红色的填充扇形。DimmybrushAsNewSolidBrush(Color.Red)g.F

35、illPie(mybrush,0,0,100,100,30,120)8.3.6 绘绘制文字制文字DrawString是属于Drawing.Drawing2D命名空间,用DI+绘制文本时首先要导入该命名空间,即:在窗体代码前面要加以下代码:ImportsSystem.Drawing.Drawing2D在绘制文字时,DrawString方法不仅要与Graphics对象一起使用,还要在创建用于绘制文字的Brush对象后才能使用相应的字体对象绘制文本。格式为:g.DrawString(文本内容,Fontf,画刷对象,位置)例如,下列代码可以在指定位置可以绘制一行带阴影效果的文字。8 8.4.4 图像处

36、理图像处理8.4.1 利用利用PictureBox控件控件显显示示图图像像1PictureBox控件的常用属性属性作用BackColor获取或设置PictureBox控件的背景色BackgroundImage获取或设置PictureBox控件显示的背景图像BorderStyle指示控件的边框样式,默认为None.Image获取或设置PictureBox显示的图像SizeMode示如何显示图像。默认值为Normal2为PictureBox控件加载和删除图片(1)加载图片首先在窗体上添加一个PictureBox控件,在属性窗口选择它的Image属性,点击右侧的省略号按钮,将打开【选择资源】对话框,

37、如图8-9所示。如果选择本地资源中的图片,则点击导入按钮,在弹出的【打开】对话框中选择图像文件,单击【确定】按钮即可。如果要在编程时加载图片,可以使用Image类的FromFile方法来设置PictureBox控件的Image属性,格式为:PictureBox1.Image=Image.FromFile(FilePath)其中FilePaht要包含加载的图片文件及其完整路径。(2)删除图片如果要删除PictureBox控件中加载的图片,可以用以下几种方法。选中PictureBox控件的Image属性,单击右键,在弹出的快捷菜单中选则“重置”命令即可删除控件中的图片。将鼠标的焦点放到Image属

38、性后的图片路径框中,使用键盘上的Del键也可删除图片。用代码来删除图片,即:PictureBox1.Image=Nothing8.4.2 利用利用DrawImage方法方法编辑图编辑图像像1显示图像调用图像文件中的图形,需要Bitmap对象和Graphics对象结合使用。一般是在创建Bitmap对象后,使用Graphics对象的DrawImage方法将文件中的图像显示出来。Bitmap类是抽象类Image的派生类,可以用来创建对象,进行位图文件操作。既可以显示图像、也可以编辑图像。Bitmap类提供了用于加载、保存和处理光栅图像的更多方法,因而扩展了Image类的功能。例如,下列代码,可以将j

39、pg文件显示到图片框中。PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.ClickDimpicAsNewBitmap(e:vbbb.jpg)DimgAsGraphics=Me.PictureBox1.CreateGraphics()g.DrawImage(pic,0,0,320,300)EndSub2裁切和缩放图像用DrawImage可以对图像进行放大或缩小,格式为:DrawImage(Imageimg,Rectangerect)例如,原始图像大小为(0,0,300,300)则g.DrawImage(pic,

40、0,0,200,200)会缩小图像,而g.DrawImage(pic,NewRectangle(0,0,400,400)则可以放大图像。原始图像宽度和高度可以用BitMap对象的Weight,Height属性表示,则g.DrawImage(pic,NewRectangle(0,0,pic.Width*2,pic.Height*3)将会按比例放大图像。如果所乘系数小于1,则会缩小图像。3旋转、反射和扭曲图像用DrawImage还可以对图像进行旋转、反射和扭曲操作。格式为:DrawImage(Imageimg,Pointdestpoints();destPoints包含对新坐标系定义所需点的数据。

41、destPoints中的第一个点定义的是坐标原点,第二点用来定义X轴的方法和图像X方向的大小,第三个是用来定义Y轴的方法和图像Y方向的大小。若destPoints定义的新坐标系中两轴方向不垂直,就能达到图像拉伸的效果。【例8-4】位图的显示、旋转与拉伸。PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.ClickDimpicAsNewBitmap(e:vb第8章aa.bmp)DimgAsGraphics=Me.PictureBox1.CreateGraphics()Dimpoints()AsPoint=NewP

42、oint(5,5),NewPoint(pic.Width*3,25),NewPoint(5,pic.Height*6)g.DrawImage(pic,0,0)原位显示位图g.DrawImage(pic,points)旋转与扭曲EndSub【例8-5】学生成绩分析。输入学生成绩,统计各分数段人数,并画出成绩分布直方图。具体统计时,成绩分为以下五个分数段:100 90、89 80、79 70、69 60以及60以下(不含60)。要求学生人数和成绩用InputBox()函数输入。8.5 实训练习8具体实现步骤为:(1)启动VB.NET,新建一个窗体应用程序。(2)按照图8-12界面,在窗体左侧添加五

43、个标签控件和五个文本框控件,在其底部添加三个按钮控件并修改按钮的text属性,再将一个图片框控件添加到窗体右侧。(3)定义模块级变量和数组。DimMAsIntegerDimScore()AsIntegerDimmypenAsNewPen(Color.Black,1)Dimbrush1AsNewSolidBrush(Color.Red)Dimbrush2AsNewSolidBrush(Color.Blue)Dimbrush3AsNewSolidBrush(Color.Green)(4)编写窗体的Load事件过程代码,输入学生人数。PrivateSubForm1_Load(senderAsObje

44、ct,eAsEventArgs)HandlesMyBase.LoadM=Val(InputBox(请输入人数,)EndSub(5)编写窗体的输入成绩按钮的Click事件过程代码,输入学生人数。PrivateSubButton3_Click(senderAsObject,eAsEventArgs)HandlesButton3.ClickDimi,jAsIntegerDimstr,ss(M)AsStringReDimScore(M-1)str=str=InputBox(请输入&M&个 人的成绩,用逗空格分隔,)ss=Split(Trim(str),)Fori=0ToM-1Score(i)=ss(i

45、)NextEndSub(6)编写窗体的统计按钮的Click事件过程代码,统计各分数段学生人数。PrivateSubButton1_Click(senderAsObject,eAsEventArgs)HandlesButton1.ClickDimiAsIntegerdims1,s2,s3,s4,s5s1=0:s2=0:s3=0:s4=0:s5=0Fori=0ToM-1IfScore(i)=90Thens1=s1+1IfScore(i)=80AndScore(i)=70AndScore(i)=60AndScore(i)70Thens4=s4+1IfScore(i)60Thens5=s5+1Next

46、TextBox1.Text=s1:TextBox2.Text=s2TextBox3.Text=s3:TextBox4.Text=s4TextBox5.Text=s5EndSub(7)编写窗体的画直方图按钮的Click事件过程代码,画出图形。PrivateSubButton2_Click(senderAsObject,eAsEventArgs)HandlesButton2.ClickMe.PictureBox1.BackColor=Color.LightYellowDima1,a2,a3,a4,a5,b1,b2,b3,b4,b5AsIntegera1=Int(1-s1/M)*150):b1=In

47、t(s1/M*150)a2=Int(1-s2/M)*150):b2=Int(s2/M*150)a3=Int(1-s3/M)*150):b3=Int(s3/M*150)a4=Int(1-s4/M)*150):b4=Int(s4/M*150)a5=Int(1-s5/M)*150):b5=Int(s5/M*150)g.DrawLine(mypen,10,10,10,150)g.DrawLine(mypen,10,150,250,150)g.DrawString(优秀 良好 中等 及格 不及格,NewFont(宋体,12),Brushes.Black,30,160)g.FillRectangle(brush1,30,a1,30,b1)g.FillRectangle(brush2,70,a2,30,b2)g.FillRectangle(brush3,110,a3,30,b3)g.FillRectangle(brush2,150,a4,30,b4)g.FillRectangle(brush1,190,a5,30,b5)EndSub(8)运行程序。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁