《第9章_菜单与图形.ppt》由会员分享,可在线阅读,更多相关《第9章_菜单与图形.ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第9章章 菜单与图形菜单与图形1教学内容 图形的基本概念图形的编程菜单的创建与使用2绘图基础知识:绘图基础知识:坐标系坐标系GDI+设置绘图属性(线宽和颜色、填充、文字属性)设置绘图属性(线宽和颜色、填充、文字属性)绘图绘图菜单菜单设计菜单、编写菜单项的事件代码、设计上下文菜单设计菜单、编写菜单项的事件代码、设计上下文菜单 39.1 引例引例例例9-1 在在Form窗体上输出图像,即文字。窗体上输出图像,即文字。分析分析 使用使用GDI+函数完成。函数完成。4代码代码 Dim g As Graphics=e.Graphics 获取获取graphics 对象对象 Dim penRed As P
2、en=New Pen(Color.Red)使用画笔和颜色使用画笔和颜色 Dim penBlue As Pen=New Pen(Color.Blue,5)Dim brushSolid As SolidBrush=New SolidBrush(Color.DarkGreen)Dim brushTexture As TextureBrush=New TextureBrush(New _ Bitmap(E:MyPhoto.jpg)设置填充属性设置填充属性 设置文字属性设置文字属性 Dim fontMyfavor As Font=New Font(幼圆幼圆,26,FontStyle.Italic)Dim
3、 ptP1 As Point=New Point(12,12)Dim ptP2 As Point=New Point(200,100)画直线画直线 g.DrawLine(penRed,55,55,224,99)g.DrawLine(penBlue,ptP1,ptP2)5画矩形和椭圆画矩形和椭圆 g.DrawRectangle(penBlue,55,100,100,100)g.DrawEllipse(penRed,0,0,300,200)g.DrawEllipse(penBlue,300,0,400,300)画填充的矩形和椭圆画填充的矩形和椭圆 g.FillEllipse(brushSolid,
4、155,200,100,100)g.FillEllipse(brushTexture,300,0,400,300)g.DrawEllipse(penBlue,300,0,400,300)输出文字输出文字 g.DrawString(欢迎来到西安交通大学!欢迎来到西安交通大学!,fontMyfavor,_brushSolid,0,400)69.2 绘图基础知识 一、坐标系一、坐标系容器:容器:能够放置其它对象的对象,如窗体、屏幕,每个容器能够放置其它对象的对象,如窗体、屏幕,每个容器都有一个坐标系都有一个坐标系坐标系的默认设置坐标系的默认设置左上角为坐标原点左上角为坐标原点横向向右为横向向右为X轴
5、方向轴方向纵向向下为纵向向下为Y轴方向轴方向默认的长度单位为像素(默认的长度单位为像素(Pixel)7可以使用可以使用Point结构定义二维平面上的一个点。结构定义二维平面上的一个点。例如:例如:Dim pt1 As Point=new Point(30,30)Dim pt2 As Point=new Point(110,110)8二、GDI+GDI+:(Graphics Device Interface,图形设备接口图形设备接口),VB.NET 的图的图形系统形系统可以创建图形、文本以及将图形图像作为对象操作。可以创建图形、文本以及将图形图像作为对象操作。GDI+中最主要的是中最主要的是Gr
6、aphics类类,它封装了,它封装了GDI+图画板,图画板,绘图时先创建绘图时先创建 Graphics 对象对象可以在窗体或许多控件上绘图可以在窗体或许多控件上绘图9三、创建Graphics对象在窗体的在窗体的paint事件中创建:事件中创建:Private Sub Form1_Paint(ByVal sender As Object,ByVal e As System.Windows.Forms.PaintEventArgs)Handles MyBase.Paint Dim g As Graphics=e.GraphicsEnd Sub10四、与 Graphics 一起使用的对象1、Pen用
7、来画线、多边形、矩形、弧等外围的轮廓部分。用来画线、多边形、矩形、弧等外围的轮廓部分。2、Brush用指定颜色、样式、纹理等来填充封闭的图形。用指定颜色、样式、纹理等来填充封闭的图形。3、Font 用来描述字体的样式。用来描述字体的样式。4、Color用来描述颜色用来描述颜色119.3 设置绘图属性1、设置画线的宽度和颜色、设置画线的宽度和颜色例如:例如:Dim penRedpen As Pen=New pen(Color.Red)使用红色创建了一个新的画笔对象,使用红色创建了一个新的画笔对象,Dim penBluepen As Pen=New pen(Color.Blue,5)创建一个蓝色画
8、笔,同时指定画笔宽度创建一个蓝色画笔,同时指定画笔宽度5个像素个像素122、设置填充属性填充由笔刷填充由笔刷Brush对象来定义,对象来定义,GDI中不同的笔刷如:中不同的笔刷如:SolidBrush、TextureBrush、RectangleGradientBrush例例1:SolidBrush单色刷,用一种颜色填充图形。单色刷,用一种颜色填充图形。Dim brushSolid As SolidBrush=New SolidBrush(Color.Red)例例2:TextureBrush,使用一个图片来填充图形,需使用一个图片来填充图形,需要用一个要用一个Bitmap对象作为函数的参数。对
9、象作为函数的参数。Dim brushTexture As TextureBrush=New TextureBrush(New Bitmap(e:MyPhoto.jpg)133、设置文字属性Font类定义文字的格式:字体、大小、样式类定义文字的格式:字体、大小、样式例如:例如:Dim fontMyWord As Font=new Font(“Times New Roman”,26,FontStyleItalic)声明了一个字体对象声明了一个字体对象fontMyWord149.4 绘图Private Sub Form1_Paint(ByVal sender As Object,ByVal e As
10、 _System.Windows.Forms.PaintEventArgs)Handles MyBase.Paint Dim g As Graphics=e.Graphics Dim penRed As Pen=New Pen(Color.Red)Dim penBlue As Pen=New Pen(Color.Blue,5)Dim brushSolid As SolidBrush=New SolidBrush(Color.DarkGreen)Dim brushTexture As TextureBrush=New TextureBrush(New Bitmap(.MyPhoto.jpg)Di
11、m fontMyfavor As Font=New Font(幼圆幼圆,26,FontStyle.Italic)Dim ptP1 As Point=New Point(12,12)Dim ptP2 As Point=New Point(200,100)15 画直线画直线 g.DrawLine(penRed,55,55,224,99)g.DrawLine(penBlue,ptP1,ptP2)画矩形和椭圆画矩形和椭圆 g.DrawRectangle(penBlue,55,100,100,100)g.DrawEllipse(penRed,0,0,300,200)g.DrawEllipse(penBl
12、ue,300,0,400,300)画填充的矩形和椭圆画填充的矩形和椭圆 g.FillEllipse(brushSolid,155,200,100,100)g.FillEllipse(brushTexture,300,0,400,300)g.DrawEllipse(penBlue,300,0,400,300)输出文字输出文字 g.DrawString(欢迎来到西安交通大学!欢迎来到西安交通大学!,fontMyfavor,brushSolid,0,400)End Sub 16(1)使用DrawLine方法画直线格式格式1:DrawLine(pen,x1,y1,x2,y2)pen:定义好的画笔。定义
13、好的画笔。x1、y1直线起点的坐标直线起点的坐标x2、y2直线终点的坐标直线终点的坐标格式格式2:DrawLine(pen.pt1,pt2)pt1、pt2是是Point结构类型,分别是起点和终点的坐标结构类型,分别是起点和终点的坐标例:例:g.DrawLine(penRed,55,55,224,99)g.DrawLine(penBlue,ptP1,ptP2)17(2)使用DrawRectangle 绘制矩形DrawRectangle(pen,x,y,width,height)x,y:左上角的坐标左上角的坐标 width和和height:矩形的宽度和高度矩形的宽度和高度例:例:g.DrawRec
14、tangle(penBlue,55,100,100,100)18(3)使用DrawEllipse画圆DrawEllipse(pen,x,y,width,height)x,y:椭圆外接矩形左上角的坐标椭圆外接矩形左上角的坐标 width和和height:外接矩形的宽度和高度外接矩形的宽度和高度例:例:g.DrawEllipse(penRed,0,0,300,200)g.DrawEllipse(penBlue,300,0,400,300)19(4)填充形状填充矩形:填充矩形:FillRectangle填充椭圆:填充椭圆:FillEllipse例:例:g.FillEllipse(brushSolid
15、,155,200,100,100)g.FillEllipse(brushTexture,300,0,400,300)g.DrawEllipse(penBlue,300,0,400,300)20(5)使用DrawString输出字符串DrawString(String,Font,Brush,x,y)参数参数:要输出的字符串、字体、颜色刷、字符串的要输出的字符串、字体、颜色刷、字符串的起始坐标起始坐标例:例:g.DrawString(欢迎来到西安交通大学!欢迎来到西安交通大学!,fontMyfavor,brushSolid,0,400)219.5 在控件上绘图 在大部分的控件上也可以绘图。在大部分
16、的控件上也可以绘图。在绘图之前,同样需要创建在绘图之前,同样需要创建Graphics对象。对象。通过控件的通过控件的CreateGraphics方法创建方法创建Graphics对象对象例题:例题:22Button的Click事件代码Private Sub BtnGraph_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles BtnGraph.Click Dim g As Graphics Dim brushRed As SolidBrush=New SolidBrush(Color.Red)Dim br
17、ushGreen As SolidBrush=New SolidBrush(Color.Green)Dim brushYellow As SolidBrush=New SolidBrush(Color.Yellow)g=Textbox1.CreateGraphics()g.FillEllipse(brushRed,42,2,28,28)g.FillEllipse(brushGreen,12,2,28,28)g.FillEllipse(brushYellow,72,2,28,28)End Sub此时的坐标原点在此时的坐标原点在TextBox控件的左上角。控件的左上角。239.6 菜单VB.Net
18、的菜单的菜单1)主菜单)主菜单通常位于应用程序顶部的,它提供了对应用程序所有通常位于应用程序顶部的,它提供了对应用程序所有功能的访问途径;功能的访问途径;由由MenuStrip控件创建控件创建2)上下文相关菜单()上下文相关菜单(Context Menu)使用鼠标在某个对象上右击时,弹出的快捷菜单使用鼠标在某个对象上右击时,弹出的快捷菜单由由ContextMenuStrip控件创建控件创建24一、菜单的基本概念1、主菜单、主菜单由若干个菜单选项组成,单击某个选项会下拉出该菜由若干个菜单选项组成,单击某个选项会下拉出该菜单选项的列表。单选项的列表。2、菜单中的热键、菜单中的热键菜单标题的后面带下
19、划线的字符,例如按菜单标题的后面带下划线的字符,例如按AftF3、下拉菜单中,带有省略号下拉菜单中,带有省略号“”的命令的命令将打开一个对话框将打开一个对话框4、菜单项中的分隔线、菜单项中的分隔线使作用相近的菜单项放置在一起使作用相近的菜单项放置在一起255、菜单项的右边向右的小箭头、菜单项的右边向右的小箭头 带有子菜单项的标志,带有子菜单项的标志,VB.NET中,最多可以使用中,最多可以使用6级级6、菜单项前带有、菜单项前带有“”标志标志代表一种状态代表一种状态7、灰色显示的菜单项、灰色显示的菜单项该菜单项目前状态下不能执行该菜单项目前状态下不能执行262、设计菜单创建菜单的过程:创建菜单的
20、过程:1)在界面上放置菜单项)在界面上放置菜单项2)设置菜单的属性)设置菜单的属性;3)根据需要编写菜单命令触发事件的响应代码)根据需要编写菜单命令触发事件的响应代码273、编写菜单项的事件代码Private Sub MenuFileNew_Click(ByVal sender As Object,_ByVal e As System.EventArgs)Handles MenuFileNew.Click 新建菜单的事件代码新建菜单的事件代码 TxtEdit.Text=TxtEdit.Focus()End Sub284、设计上下文菜单右击控件时打开的菜单右击控件时打开的菜单(快捷菜单快捷菜单)
21、使用控件:使用控件:ContextMenuStrip与窗体上的其他控件或窗体本身关联与窗体上的其他控件或窗体本身关联关联的方法:关联的方法:使用窗体或控件的使用窗体或控件的ContextMenuStrip属性,设置为前面属性,设置为前面定义的定义的ContextMenuStrip菜单控件名之一菜单控件名之一为每一个菜单项的为每一个菜单项的Click事件编写代码:事件编写代码:29TxtEdit的属性的属性SelectionLength若为若为0,表示当前没有文本被,表示当前没有文本被选定,因此将复制和剪切的选定,因此将复制和剪切的Enbled属性设为属性设为false使它们弹使它们弹出时是灰色的。出时是灰色的。Private Sub MenuEdit_Popup(ByVal sender As Object,_ByVal e As System.EventArgs)Handles MenuEdit.Popup If TxtEdit.SelectionLength=0 Then MenuEditCopy.Enabled=False MenuEditCut.Enabled=False Else MenuEditCopy.Enabled=True MenuEditCut.Enabled=True End IfEnd Sub30
限制150内