图形图像处理_第1页
图形图像处理_第2页
图形图像处理_第3页
图形图像处理_第4页
图形图像处理_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单元七 图形图像处理学习目标 熟悉VB.NET绘制图形的有关概念、常用的类、对象、属性和方法等基础知识,熟悉开发绘制图形、浏览图像、图形动画程序的流程、方法、和技巧。7.1 图形的绘制 案例7-1 仿Windows画图程序 本案例模仿Windows画图程序,有菜单栏和工具栏。单击工具栏上的相应按钮选择要画的图形;在画笔颜色处单击色块调出调色板,选择颜色;单击画笔宽度中需要的线条决定所画边框的粗细。将鼠标移到绘图区相应的位置按住左键拖到适当位置放开,即绘出了相应图形。此案例的运行界面如图7-1所示。技能目标1熟悉Point/Pointf、Size/Sizef、Rectangle/Rectangl

2、ef对象。2熟悉颜色、画笔、画刷的使用方法。3熟悉Graphics的各种绘绘制图形的方法。4掌握图形的平移变换、旋转变换和比例变换的方法。图7-1 仿Windows画图程序主界面操作要点与步骤1.建立一个新的Windows应用程序,命名为vbnet7-1。2.在窗体上添加如下控件:一个Mainmenu控件设计菜单,一个ToolBar控件设计绘图工具栏,一个PictureBox作为本程序画板,用二个Lable控件让用户选择颜色和选择画笔宽标志,5个button控件让用户选择画笔宽度,一个ColorDialog 控件做调色板,一个ImageList控件,一个OpenFileDialog控件,一个S

3、tatusBar作为状态信息栏。调整窗体上各控件的大小及位置。3. 设置各控件的相关属性,属性值设置如表7-1所示。表7-1 画图程序各控件属性设置控件类别控件命名属性名属性值FormForm1TextVbnet7-1IconMydraw.icoMenuMainMenu1MainmenuMainmenu1mFiletext文件(&F)mNewtext新建(&N)mExittext退出(&X)MenuItem1text编辑(&E)MenuItem3text复制(&C)MenuItem4text剪切(&V)MenuItem5text粘贴(&P

4、)ToolBarToolBar1ImageListImageList1ShowTipTureImageListImageList1TransparentColorTransParentOpenFileDialogOpenFileDialog1Filter图标文件|*.icoColorDialogColorDialog1ColorBlacklbcolorLbcolor1BackColorBlueStatusBarStatusBar1ShowPannelsTureStatusBarPanel1text制作人:BorderStyleRaisedAutoSizeContentsStatusBarPan

5、el2textWendyBorderStyleRaisedAutoSizeNoneStatusBarPanel3text版本:BorderStyleRaisedAutoSizeContentsStatusBarPanel4textVer1.0BorderStyleRaisedAutoSizeNonePictureBoxPictureBox1BackColorWhiteButtonButpen1BackcolorBlackButpen2BackcolorBlackButpen3BackcolorBlackButpen4BackcolorBlackButpen5BackcolorBlacklabe

6、lLabel1text画笔颜色Label2text画笔宽度为ImageList1控件添加图标。单击ImageList1的Images属性右侧的“”按钮,弹出如图7-2所示“Image集合编辑器”对话框,在窗口中单击“添加”按钮为ImageList1添加图标。没有设置的控件属性均为默认值,以后的案例中属性说明与此相同。图7-2 Image集合编辑器4.为工具栏ToolBar控件添加按钮。单击ToolBar1控件的Buttons属性右侧的“”按钮,弹出“ToolBarButton集合编辑器”,在窗口中单击“添加”按钮为ToolBarButton1添加按钮。 除了TPencil1按钮的Pushed属

7、性为True外,其余按钮的Pushed属性均为False,即程序刚运行时,只有“铅笔工具”的按钮处于按下状态,默认用户选择的是“铅笔工具”。5.以上步骤完成了界面设计及控件属性设置,可进行代码编写了。(1)在orm1类里定义全局变量和mSelect枚举。Dim g As Graphics定义Graphics对象Dim pstart As Point, pend As Point定义画图的起始点,终点Dim mChoice As Integer选择图形枚举Dim mWidth As Integer画笔宽度Dim mIcon As Icon 用户选择图标Enum mSelect选择图形类别枚举Pe

8、ncil '铅笔 Line '直线 Rec '矩形 FillRec '填充矩形 StyleRec '风格矩形 Ellipse '椭圆 FillEllipse '填充椭圆 StyleEllipse '风格椭圆 Icon '图标 Eraser '橡皮End Enum(2) 在Form1的Load事件中初始化全局变量和Graphics对象。Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.L

9、oad g = PictureBox1.CreateGraphics mChoice = mSelect.Pencil '默认选择为铅笔工具 mWidth = 2 '初始化画笔宽度End Sub(3) 定义转换坐标起点和终点的过程Convert_Point()。转换坐标起始点和终点,确保起始点始终在终点的左上方。代码如下: Private Sub Convert_Point() Dim ptemp As Point '用于交换的临时点 If pstart.X < pend.X Then If pstart.Y > pend.Y Then ptemp.Y =

10、pstart.Y pstart.Y = pend.Y pend.Y = ptemp.Y End If End If If pstart.X > pend.X Then If pstart.Y < pend.Y Then ptemp.X = pstart.X pstart.X = pend.X pend.X = ptemp.X End If If pstart.Y > pend.Y Then ptemp = pstart pstart = pend pend = ptemp End If End If End Sub(4) 双击ToolBar1控件,编写ToolBar1的 Bu

11、ttonClick事件代码:'工具栏按钮单击事件Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As_ System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick Dim i As Integer For i = 0 To ToolBar1.Buttons.Count - 1 '使每个按钮都处于未按下状态 ToolBar1.Buttons.Item(i).Pushed = False N

12、ext '记录选择的图形 mChoice = ToolBar1.Buttons.IndexOf(e.Button) e.Button.Pushed = True '用户单击的按钮处于按下状态 If mChoice = mSelect.Icon Then '如果选择的是画图标,则打开OpenFileDialog选取图标 If OpenFileDialog1.ShowDialog = DialogResult.OK Then mIcon = New Icon(OpenFileDialog1.FileName) End If End IfEnd Sub(5) 双击lbcolo

13、r控件,进入lbcolor的Click事件,选择画笔颜色。代码如下:Private Sub lbcolor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_ Handles lbcolor.Click '打开调色板,并把用户选择的颜色赋给lbcolor的背景色 If ColorDialog1.ShowDialog = DialogResult.OK Then lbcolor.BackColor = ColorDialog1.Color End If End Sub(6) 编写选择画笔宽度的共享事件过程b

14、tnpen_Click()代码。Private Sub btnpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnpen1.Click, btnpen2.Click, btnpen3.Click, btnpen4.Click, btnpen5.Click '把所有按钮的背景色都设为Black btnpen1.BackColor = Color.Black btnpen2.BackColor = Color.Black btnpen3.BackColor = Color.Bl

15、ack btnpen4.BackColor = Color.Black btnpen5.BackColor = Color.Black '用户选中的按钮背景色为Blue CType(sender, Button).BackColor = Color.Blue '把画笔宽度设为用户选择按钮的Tag值 mWidth = CType(sender, Button).Tag End Sub(7) 为 PictrueBox1的MouseDown(鼠标按下)事件编写代码。在Form1的代码窗口中,在左侧的对象下拉列表框中选择PictureBox1,然后在右侧的事件下拉列表框中选择

16、MouseDown,此时代码编辑器中已经自动生成了PictureBox1_MouseDown的事件码,并把鼠标定位于事件过程内部的第一行,在该过程中编写如下代码。'画板鼠标按下事件 Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As_ System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown If e.Button = MouseButtons.Left Then '如果用户按下的是鼠标左键,则将当前点坐标赋给起始点

17、pstart.X = e.X pstart.Y = e.Y End If End Sub(8)为 PictrueBox1的MouseUp(鼠标释放)事件编写代码。'画板上用户按下鼠标后又释放的事件Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As_ System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp If e.Button = MouseButtons.Left Then '如果用户按下的是鼠标左键,记录终点坐

18、标 pend.X = e.X pend.Y = e.Y '根据保存的mChoice绘制图形 Select Case mChoice Case mSelect.Line '用户在工具栏中选择的是铅笔 Dim pen1 As New Pen(lbcolor.BackColor, mWidth) g.DrawLine(pen1, pstart, pend) '根据起点和终点绘制直线 Case mSelect.Rec '用户在工具栏中选择的是空心矩形 Convert_Point() '转换矩形的起点为其左上点 Dim pen1 As New Pen(lbcolo

19、r.BackColor, mWidth) g.DrawRectangle(pen1, pstart.X, pstart.Y, _ pend.X - pstart.X, pend.Y - pstart.Y) '根据起点和终点绘制空心矩形 Case mSelect.FillRec '用户在工具栏中选择的是填充矩形 Convert_Point() '转换矩形的起点为其左上点 Dim rec As New Rectangle(pstart.X, pstart.Y, _ pend.X - pstart.X, pend.Y - pstart.Y) '根据起点和终点定义矩形

20、Dim sbr As New SolidBrush(lbcolor.BackColor) '定义画刷颜色为用户选择的颜色 g.FillRectangle(sbr, rec) '绘制填充矩形 Case mSelect.StyleRec '用户在工具栏中选择的是风格矩形 Convert_Point() '转换矩形的起点为其左上点 Dim rec As New Rectangle(pstart.X, pstart.Y, _ pend.X - pstart.X, pend.Y - pstart.Y) '根据起点和终点定义矩形 ' 定义画刷风格为Cross

21、型,前景色为白色,背景色为用户选择 Dim hbr As New HatchBrush(HatchStyle.Cross, Color.White, lbcolor.BackColor)_ g.FillRectangle(hbr, rec) '用画刷填充矩形 Case mSelect.Ellipse '用户在工具栏中选择的是空心椭圆 Convert_Point() '转换椭圆外接矩形的起点为其左上点 Dim pen1 As New Pen(lbcolor.BackColor, mWidth) g.DrawEllipse(pen1, pstart.X, pstart.Y,

22、 _ pend.X - pstart.X, pend.Y - pstart.Y) '根据椭圆外接矩形的起点和终点绘制椭圆 Case mSelect.FillEllipse '用户在工具栏中选择的是填充椭圆 Convert_Point() '转换椭圆外接矩形的起点为其左上点 Dim rec As New Rectangle(pstart.X, pstart.Y, _ pend.X - pstart.X, pend.Y - pstart.Y) '定义椭圆的外接矩形 Dim sbr As New SolidBrush(lbcolor.BackColor) '定

23、义画刷颜色为用户选择的颜色 g.FillEllipse(sbr, rec) '用画刷填充矩形 Case mSelect.StyleEllipse '用户在工具栏中选择的是风格椭圆 Convert_Point() '转换椭圆外接矩形的起点为其左上点 Dim rec As New Rectangle(pstart.X, pstart.Y, _ pend.X - pstart.X, pend.Y - pstart.Y) '定义椭圆的外接矩形 ' 定义画刷风格为Cross型,前景色为白色,背景色为用户选择 Dim hbr As New HatchBrush(Ha

24、tchStyle.Cross, Color.White, lbcolor.BackColor)_ g.FillEllipse(hbr, rec) '用画刷填充矩形 End Select End If End Sub(9) 为 PictrueBox1的MouseMove(鼠标移动)事件编写代码。'画板鼠标移动事件Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As_System.Windows.Forms.MouseEventArgs) Handles PictureBox1.Mouse

25、Move If e.Button = MouseButtons.Left Then '如果用户按下的是鼠标左键,根据保存的mChoice绘制图形 Select Case mChoice Case mSelect.Pencil '用户在工具栏中选择的是铅笔 Dim pen1 As New Pen(lbcolor.BackColor, mWidth) pend.X = e.X pend.Y = e.Y g.DrawLine(pen1, pstart, pend) pstart = pend '将已经绘制的终点作为下一次的绘制的起点 Case mSelect.Eraser &

26、#39;用户在工具栏中选择的是橡皮 Dim pen1 As New Pen(Color.White, mWidth) '定义白色画笔作为擦除效果 pend.X = e.X pend.Y = e.Y g.DrawLine(pen1, pstart, pend) '将已经绘制的终点作为下一次的绘制的起点 pstart = pend '将已经绘制的终点作为下一次的绘制的起点 End Select End If End Sub(10) 为 PictrueBox1的Mouse的Click(鼠标单击)事件编写代码。Private Sub PictureBox1_Click

27、(ByVal sender As Object, ByVal e As System.EventArgs) Handles _PictureBox1.Click If mChoice = mSelect.Icon Then '画图标 g.DrawIcon(mIcon, pstart.X, pstart.Y) End If End Sub(11) 为mNew“新建”菜单的Click事件编写代码。 '“新建”菜单项单击事件Private Sub mNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs

28、) Handles _mNew.Click PictureBox1.Refresh() '刷新PictureBox1 End Sub(12) 为mExit“退出”菜单的Click事件编写代码。'“退出”菜单项单击事件Private Sub mExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _mExit.Click Application.Exit() '退出程序 End Sub至此,基本代码编写完成,按F5或工具栏上的运行按钮,即可运行程序,用户可以画图了。相关

29、知识绘图基础知识:Point/Pointf、Size/Sizef、Rectangle/Rectanglef知识点7-1-1图形程序设计需用到相关基础支持类与结构,如位置、大小,常用点(Point)、矩形(Rectangle)、大小(Size)等Structure(结构)来表示范围。1. Point/Pointf结构Point/Pointf结构主要用于设置控件在窗体中所在位置的坐标点,即表示一个二维(X,Y)坐标。二者差别在于:Point使用整数坐标,而Pointf使用单精度浮点数据类型坐标。(1)声明方法Point结构声明方法如下:Dim p As New Point(整数X,整数Y)例:Di

30、m p As New Point(10,20) 定义了一个X坐标是10,Y坐标是20的点Pointf结构声明与Point相似,即直接指定坐标点X、Y的单精度浮点数值,方法如下:Dim p As New Pointf(单精度浮点X,单精度浮点Y)(2)Point结构其他属性、方法与功能Offset方法功能:设置坐标点位移。例如:Dim p As New Point(10, 20) 定义一个坐标为(10,20)的点p.offset(20,30) 将p点平移到坐标为(30,50)处Equals方法功能:表示如果两个点的坐标相同,则返回True,否则返回False。IsEmpty属性功能:如果某点的X

31、坐标和Y坐标都是为0,则返回True,否则返回False。例:Dim x As Boolean 定义一个逻辑变量xDim p As New Point(0, 0) 定义一个坐标点为(0,0)的点x = p.IsEmpty() x的值是逻辑True 2. Size/Sizef结构Size/Sizef是GDI+绘图中常用到的结构,用Width(宽度)和Height(高度)两个属性来表示其大小。声明方法:Dim s As New Size(Width, Height)3. Rectangle/Rectanglef结构Rectangle/Rectanglef结构用来定义一个矩形区域,二者区别在于Rec

32、tangle结构的坐标是整型,Rectanglef结构的坐标是浮点型。(1)声明方法:Dim r As New Rectangle(X,Y,Width,Height)例如:创建一个左上角X坐标是20,Y坐标是30,宽度是10,高度是15的矩形代码如下:Dim rec As New Rectangle(20,30,10,15)(2)Rectangle结构主要属性/方法和功能见表7-2表7-2 Rectangle属性/方法与功能表属性/方法功能Top属性矩形最上边缘的Y坐标Bottom属性矩形最下边缘的Y坐标Left属矩形最左边缘的X坐标Right属性矩形最右边缘的X坐标Location属性矩形左

33、上角坐标Size属性矩形大小IsEmpty属性若矩形Width、Height、X、Y属性值均为0,则此属性返回值为True, 否则为FalseEquals方法若两个矩形大小和位置相同,则返回值为True,否则为FalseInterSectWidth方法如果一个矩形与另一个矩形相交,则返回True,否则为False与VB6.0一样,在VB.NET中也是以所在控件容器的最左最上一点作为坐标系统原点。绘图基础知识:颜色、画笔、画刷知识点7-1-21. 颜色颜色是绘图功能中非常重要的一部分,在VB.NET中颜色用Color结构和Color列举来表示。Color结构中颜色由4个整数值Red、Green、

34、Blue和Alpha表示。其中Red、Green、Blue可简写成R、G、B,表示颜色的红、绿、蓝三原色;Alpha表示不透明度。(1)使用FromArgb方法设置颜色图7-3颜色合成原理图语法格式:Color.FromArgb(A,R,G,B)功能:由透明度、红、绿、蓝来调配颜色。说明:A透明参数:其值为0至255,数值越小越透明。0表示全透明,255表示完全不透明。A可缺省,其默认值为255。R、G、B为颜色参数不可缺省。(R,G,B)合成原理如图7-3如示:例:(255,0,0)为红色(0,255,0)为绿色(0,0,255)为蓝色(255,0,255)为紫色(2)获取Color结构的各

35、颜色分量值VB.NET中可获取对象Color的四个自变量的值,其语法如下:R=对象.Color.RG=对象.Color.GB=对象.Color.B例:取出PictureBox1控件背景的R自变量值。R=PictureBox1.BackColor.R(3)用Color列举设置颜色使用Color列举可直接指定系统定的颜色,这些被定义的颜色均用英文命名,有140多个,常用的有Red、Green、Blue、Yellow、Brown、White、Gold、Tomato、Pink、SkyBlue、Orange等列举名称。使用语法如下:Color.颜色列举名称例:将Button1控件背景设成蓝色。Butto

36、n1.BackColor=Color.BlueColor列举颜色不必背记,在编辑程序代码时,只要输入“Color.”,系统会自动列出这些英文名称,程序员选择其中之一即可。2. 画笔画笔(Pen)可在Graphics画布对象上绘制图形,只要指定画笔对象的颜色与粗细,配合相应的绘图方法,就可绘制图形形状、线条和轮廓。画笔类中封装了线条宽度、线条样式和颜色等。(1)Pen类的主要属性Pen类主要属性如表7-3所示。表7-3 Pen类主要属性属性相关说明Alignment属性获取或设置画笔绘制对象的对齐方式Color属性获取或设置画笔的颜色DashStyle属性线条所使用的破折号样式PenType属性

37、线条使用的画笔类型Width属性获取或设置画笔的宽度(2)声明画笔对象声明画笔对象有两种方式,语法如下:Dim 画笔对象 As New Pen(颜色 ,粗细)或Dim 画笔对象 As Pen例:Dim mpen As New Pen(Color.Red) 创建颜色为红色的画笔当缺省画笔粗细自变量时,系统默认为1 Pixel(象素)。(3)重新设置画笔对象颜色与粗细。语法如下:画笔对象.Color=颜色画笔对象.Width=粗细3.画刷画笔对象描给图形的边框和轮廓,若要填充图形的内部则必须使用画刷(Brush)对象。使用画刷对象时,也要配合FillRectangle、FillPolygon、Fi

38、llEllipse、FillPie等绘图方法。GDI+提供了几种不同形式的画刷,如SolidBrush、TextureBrush、HatchBrush等。这些画刷都是从System.Drawing.Brush基类中派生的。(1)SolidBrush画刷这种画刷指定了填充区域的颜色,是最简单的一种,其创建方法如下:Dim br As SolidBrush = New SolidBrush(Color.Yellow) 定义黄色填充(2)TextureBrush画刷这种画刷定义了用图形填充图像内部区域的刷子,它可以用Image属性或其构造函数来定义画刷填充的图像。创建方法如下:Dim bm As N

39、ew Bitmap("star.ico") 指定填充的位图Dim brush As New TextureBrush(bm)(3)HatchBrush画刷这是一种复杂的画刷,它通过绘制一种样式来填充区域,创建方法如下:Dim brush As New HatchBrush(HatchStype.Cross,Color.White,Color.Black)其中第一个参数是画刷的填充样式,第二个参数定义了填充的前景色,第三个参数定义了填充的背景色。使用HatchBrush对象前,需要先导入System.Drawing.Drawing2D命名空间,即在代码开头加上语句:Impor

40、t System.Drawing.Drawing2D。Graphics类、Graphics的常用绘图方法。知识点7-1-31.Graphics类通常绘图时,画布是必须的。在VB.NET中进行计算机绘图时同样需要类似的画布,然后再使用画笔或画刷配合相应的绘图方法做画。Graphics类可用来建立一个画布对象,还可清理和释放画布对象。(1)声明和建立画布对象语法:Dim画布对象 As Graphics画布对象=对象.CreateGraphics()功能:在指定的控件或对象中建立一个可以用绘图对象绘图的画布对象。例:在窗体内建立一个名叫g的画布对象Dim g As Graphicsg=Form1.C

41、reateGraphics()如果画布对象放置在当前窗体上,则当前窗体名可省略,即使用g= CreateGraphics()(2)清理画布对象若需将画布对象的内容清理,只要设置画布对象的底色即可,可使用下面的语法:画布对象.Clear(颜色)说明:颜色可以使用Color对象类或Color列举。例:将画布对象清理为粉色g.Clear(Color.Pink)若将画布清理为原控件的底色,可用“对象.Refresh()”语句。例:清理目前在窗体上所绘制图形Refresh()清理目前在图片控件PictureBox1上所绘制图形pictureBox1.Refresh()(3)释放画布对象可以用Graphi

42、cs类的的Dispose函数释放用CreateGraphics()创建的Graphics对象的资源。在调用Dispose函数后,画布对象将从内存中删除,不能再被使用。语法:画布对象.Dispose()例:删除画布对象gg.Dispose()2.Graphics的常用绘图方法在VB.NET中,Graphics类提供了很多绘图方法,具体介绍如下。以下举例均在已定义画布对象g的情况下。(1)画线(DrawLine)方法语法:DrawLine(画笔,起点Point,终点Point)或DrawLine(画笔,起点X坐标,起点Y坐标,终点X坐标,终点Y坐标)例:绘制一条起点坐标为(0,0),终点坐标为(1

43、50,150)的直线代码如下:Dim pt1 As Point(0,0)Dim pt2 As Point(150,150)g.DrawLine(pen1,pt1,pt2) 或g. DrawLine(pen1,0,0,150,150)(2)DrawRectangle方法语法:DrawRectangle(画笔,Rectangle对象)例:画一个左上角坐标为(10,10),宽度为100,高度为200的矩形代码如下:(x,y)宽度高度图7-4 绘制椭圆Dim pen1 As New Pen(Color.Red)Dim s As New Size(100,200)Dim pt As New Point(

44、10,10)Dim rec As New rectangle(pt,s)g.DrawRectangle(pen1,rec)(3)DrawEllipse方法语法:DrawEllipse(画笔,椭圆的外接矩形)或DrawEllipse(画笔,椭圆的外接矩形左上角X坐标,Y坐标,外接矩形宽度,高度)功能:绘制空心椭圆/圆。绘制椭圆时各参数如图7-4所示。例:绘制外接矩形左上角坐标是(10,10),椭圆宽度为200,高度为300的椭圆。Dim s As New Size(200,300)Dim pt As New Point(10,10)Dim rec Aa New Rectangle(pt,s)g.

45、DrawEllipse(pen1,rec)下面是上例的等效代码:Dim x,y, width,height as IntegerX=10Y=10Width=200Height=300g.DrawEllipse(pen1,x,y,width,height)Graphics类中没有专门用来绘制圆的函数,可以用DrawEllipse来实现,若外接矩形是正方形,则绘制的是圆。(4)其它几种常用方法及语法与功能如表7-4 所示。表7- 4常用方法及功能方法名语法功能说明DrawArc DrawArc(画笔,椭圆外接矩形,开始角度,扫过的角度)绘制椭圆/圆的一段弧。例:在画布对象g上用画笔p绘制一个弧形,

46、角度由2700到900。g.DrawArc(p,50,60,100,70,270,90)DrawPie DrawPie(画笔,椭圆外接矩形,开始角度,扫过角度)绘制空心的扇形图。例:在画布g上用画笔p绘制一个扇形,角度由2700画到1800。Dim rec As Rectangle(50,60,100,70)g.DrawPie(p,rec,270,-90)DrawPolygon DrawPolygon(画笔,Point数组)绘制一个Point数组中的点构成的多边形。DrawClosedCurveDrawClosedCurve(画笔,Point数组)绘制Point数组中的点构成的封闭曲线。Dra

47、wIcon DrawIcon(画笔,绘制点X坐标,绘制点Y坐标)或DrawIcon(画笔,绘制图标的范围矩形)在指定的坐标中绘图标。(5)DrawString方法语法:DrawString(文本,字体,画刷,X坐标,Y坐标)功能:绘制字符串文本。例:Dim brush As New SolidBrush(Color.Black) 定义画刷Dim font1 As New Font(Arial Black,36) 定义字体g.DrawString(”Welcome to VB.NET!”,font1,brush,30,100)(6)填充方法画刷配合填充方法可以填满图形内部颜色,Graphics类

48、的填充方法有FillRectangle、FillEllipse、FillPolygon、FillClosedCurve、FillPie等。它们与Draw开头的方法一一对应,输入参数也与相应的Draw方法一致,其语法定义如下:FillRectangle(画刷, 矩形)填充矩形FillEllipse(画刷, 椭圆的外接矩形)填充椭圆FillPolygon(画刷, 坐标点数组)填充多边形FillClosedCurve(画刷, 坐标点数组)填充封闭曲线FillPie(画刷, 椭圆外接矩形, 开始角度, 扫过角度)填充扇形例:以下是一个填充实例。Dim brush As New SolidBrush(C

49、olor.Black)Dim rec As New Rectangle(10,10,50,80)g.FillRectangle(brush,rec) 填充矩形Dim pt(5) As Pointpt(1)=New Point(50,100)pt(2)=New Point(100.200)pt(3)=New Point(10,400)pt(4)=New Point(50,200)pt(5)=New Point(50,100)g.FillPolygon(brush,pt) 填充多边形Dim stattAngle As Single=0.0FDim sweepAngle As Single=135.

50、0FDim reca As New Rectangle(200,10,100,100)g.FillPie(brush,rec1,startAngle,sweepAngle) 填充扇形3.坐标变换坐标变换是GDI+提供的一项重要功能。在画布上绘制图形之前,若做画布平移、缩放、旋转变换,则之后在画布上所绘制的图形均随画布而变换,可以获得很生动的效果。如画布旋转450后,在画布上的正方形在屏幕上呈现的是菱形。(1)平移(TranslateTransform方法)语法:TranslateTransform(X轴方向偏移量,Y轴方向偏移量)功能:用指定的X轴方向和Y轴方向的偏移量进行偏移。若x,y为正值

51、,则画布向右和向下平移;若x,y为负值,则画布向左和向上移动。例:将原来的图形按X轴向右平移100像素,按Y轴向下平移150像素。g.TranslateTransform(100,150) (2)旋转(RotateTransform方法)语法:RotateTransform(旋转角度)功能:旋转变换是指相对坐标原点旋转指定的角度,旋转方向以顺时针为正。例:使以后绘制的图形,皆旋转150。 g.RotateTransform(15) (3)比例(ScaleTransform)语法:ScaleTransform(X轴比例, Y轴比例)功能:比例变换是指用指定的X轴和Y轴的比例对图形进行变换,即设置画布的缩放比例。例:使以后绘的图形,皆会宽度放大3倍,高度缩小一半。g.ScaleTransform(3, 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论