第9章 VB绘图_第1页
第9章 VB绘图_第2页
第9章 VB绘图_第3页
第9章 VB绘图_第4页
第9章 VB绘图_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、第九章第九章 VBVB绘图绘图本章内容本章内容9.1 坐标系和长度单位坐标系和长度单位9.2 绘图方法绘图方法9.3 与绘图有关的控件与绘图有关的控件9.4 键盘事件键盘事件9.5 鼠标事件鼠标事件9.6 对象拖放对象拖放9.1 9.1 坐标系和长度单位坐标系和长度单位9.1.1 长度单位长度单位9.1.2 坐标系坐标系9.1.1 长度单位长度单位在在VB中,坐标系缺省的长度单位是中,坐标系缺省的长度单位是twip 1英寸约等于英寸约等于1440twip,1厘米约等于厘米约等于567twip。长度单位的设置:长度单位的设置:Scalemode属性属性如:如:Scalemode=4 窗体坐标系统

2、以字符为长度单位窗体坐标系统以字符为长度单位Picture1.scalemode=6 图片框坐标系统以毫米为长度单位图片框坐标系统以毫米为长度单位Scalemode的各种取值:的各种取值: 0-user 用户自定义用户自定义 1-twip 缺省单位,缺省单位,1twip=1/1440英寸英寸 2-Point 1Point=1/72英寸英寸 3-Pixel 象素象素 4-Character 字符字符 5-Inch 英寸英寸 6-Milimeter 毫米毫米 7-Centimeter 厘米厘米9.1.2 坐标系坐标系坐标系统用来定位元素在屏幕、窗体、图片框或坐标系统用来定位元素在屏幕、窗体、图片框

3、或PrinterPrinter对象中的位置。对象中的位置。1. 窗体的缺省坐标系窗体的缺省坐标系构成一个坐标系需要三个要素:坐标原点、坐标构成一个坐标系需要三个要素:坐标原点、坐标轴度量单位、坐标轴方向。轴度量单位、坐标轴方向。VB坐标系统的缺省坐标原点(坐标系统的缺省坐标原点(0,0)在对象的左)在对象的左上角,上角,X轴向右为正方向,轴向右为正方向,Y轴向下为正方向。轴向下为正方向。(0,00,0)xy窗体坐标系的属性:窗体坐标系的属性:ScaleTop, ScaleLeft:窗体容器的左上角的坐标:窗体容器的左上角的坐标ScaleWidth, ScaleHeight:标尺宽度和标尺高度,

4、即:标尺宽度和标尺高度,即除去标题栏和边框后的实际大小(内部大小)。除去标题栏和边框后的实际大小(内部大小)。窗体的另外四个属性:窗体的另外四个属性:Top, Left:窗体在屏幕标准坐标系上的位置:窗体在屏幕标准坐标系上的位置Width, Height:窗体的实际大小(外围大小):窗体的实际大小(外围大小)2. 控件在窗体上的坐标控件在窗体上的坐标窗体是控件的容器,控件在窗体上的坐标是用其窗体是控件的容器,控件在窗体上的坐标是用其Top和和Left属性定义的。属性定义的。Width, Height属性表示宽度和高度,它决定了控属性表示宽度和高度,它决定了控件的大小。件的大小。3. 其它控件容

5、器的坐标系其它控件容器的坐标系除窗体外,图片框(除窗体外,图片框(PictureBox)等控件也可以等控件也可以作为其它控件的容器使用,也具有坐标系定义。作为其它控件的容器使用,也具有坐标系定义。 4. Scaletop, Scaleleft等与等与Top,Left的区别的区别(1)窗体的)窗体的Top,Left,Width,Height属性的单位永远是属性的单位永远是Twip,而而ScaleTop,ScaleLeft等属性可以通过等属性可以通过ScaleMode属性任意改属性任意改变单位。变单位。 (2)窗体的)窗体的Top,Left,Width,Height属性是相对屏幕坐标而言属性是相对

6、屏幕坐标而言的,而的,而ScaleTop,ScaleLeft,ScaleWidth,ScaleHeight则则定义了窗体自己的坐标系统,窗体上的所有控件将以此为定义了窗体自己的坐标系统,窗体上的所有控件将以此为坐标基础。坐标基础。 (3) ScaleWidth,ScaleHeight是指对象的内部尺寸,不包是指对象的内部尺寸,不包括边框厚度以及菜单或标题等高度。而窗体的尺寸则由括边框厚度以及菜单或标题等高度。而窗体的尺寸则由Width和和Height属性决定。属性决定。5. 当前坐标当前坐标当在窗体等容器绘制图形或输出结果时,经常要当在窗体等容器绘制图形或输出结果时,经常要将它们定位在某一希望

7、的位置,这时就必须获得将它们定位在某一希望的位置,这时就必须获得某一点的坐标,即当前坐标。某一点的坐标,即当前坐标。CurrentX:设置:设置/返回当前坐标的水平坐标返回当前坐标的水平坐标CurrentY:设置:设置/返回当前坐标的垂直坐标返回当前坐标的垂直坐标例如,在点(例如,在点(13,2)处打印)处打印“X”:CurrentX=13:CurrentY=2:Print:”X”6.6.改变坐标系改变坐标系改变对象(如窗体)坐标系的方法:改变对象(如窗体)坐标系的方法: 对象名对象名.Scale (x1,y1)-(x2,y2) 其中其中(x1,y1)是窗体左上角的坐标,是窗体左上角的坐标,(

8、x2,y2)是窗体右下角是窗体右下角的坐标。的坐标。说明:说明: (1)如果)如果x1x2则则x轴水平向左轴水平向左 (3)如果)如果y1y2则则y轴垂直向上轴垂直向上 (5)x1=Scaleleft;y1=ScaleTop;x2=Scaleleft+Scalewidth;y2=Scaletop+Scaleheight例如:例如: Scale(0,0)-(4800,3600) 原点在左上角,原点在左上角,x轴向右,轴向右,y轴向下轴向下 Scale(0,3600)-(4800,0) 原点在左下角,原点在左下角,x轴向右,轴向右,y轴向上轴向上 Scale(-2400,1800)-(2400,-

9、1800) 原点在窗体对称中心,原点在窗体对称中心,x轴向右,轴向右,y轴向上轴向上 Scale 设置为默认坐标系设置为默认坐标系Private Sub Form_Click() Scale (-2400, -1800)-(2400, 1800) CurrentX = ScaleLeft CurrentY = ScaleTop Print ScaleLeft & , & ScaleTop CurrentX = 0 CurrentY = 0 Print helloEnd Sub例:改变坐标系,通过例:改变坐标系,通过Print查看点查看点(ScaleLeft,ScaleTop)的

10、位置和原点的位置和原点(0,0)的位的位置,理解坐标的设置置,理解坐标的设置9.2 绘图方法绘图方法9.2.1 画点画点Pset9.2.2 画直线或矩形画直线或矩形9.2.3 画圆、椭圆、圆弧画圆、椭圆、圆弧9.2.4 设置图形属性设置图形属性9.2.1 画点画点Pset语句格式:语句格式: 对象名对象名.Pset step(x,y),颜色颜色省略对象名,则默认对象是窗体。省略对象名,则默认对象是窗体。省略省略step则表示则表示(x,y)是绝对坐标,否则表示相对是绝对坐标,否则表示相对于上次画点的相对坐标。于上次画点的相对坐标。省略颜色参数,则以当前的前景色显示。省略颜色参数,则以当前的前景

11、色显示。9.2.2 画直线或矩形画直线或矩形语句格式:语句格式:对象名对象名.Line step(x1,y1)-step(x2,y2),颜色颜色,BF B表示矩形,表示矩形,F表示用画矩形的颜色实心填充,如果没表示用画矩形的颜色实心填充,如果没有矩形,填充则无意义,所以有有矩形,填充则无意义,所以有F应该有应该有B。BF表示矩形,且用边框色填充。没有表示矩形,且用边框色填充。没有F则表示空心矩形,则表示空心矩形,没有没有BF则表示以则表示以(x1,y1)-(x2,y2)为端点的直线段。为端点的直线段。省略省略step表示表示(x,y)是绝对坐标。是绝对坐标。颜色表示直线或矩形边框的颜色,如果省

12、略则为前景色。颜色表示直线或矩形边框的颜色,如果省略则为前景色。例如:例如:Line(10,20)-(80,100)Line(500,400)-(1300,100),vbred,BF 画一个红色边框,以红色填充内部的矩形画一个红色边框,以红色填充内部的矩形Forecolor=vbblueLine(500,400)-(1300,100),BF 画一个蓝色边框,以蓝色填充内部的矩形画一个蓝色边框,以蓝色填充内部的矩形9.2.3 画圆、椭圆、圆弧画圆、椭圆、圆弧画圆:画圆:对象名对象名.Circle step(x,y),半径半径,颜色颜色其中,其中,(x,y)是圆心坐标,颜色为圆周颜色,要填充则需设

13、是圆心坐标,颜色为圆周颜色,要填充则需设置对象的置对象的Fillstyle和和Fillcolor属性。属性。 画椭圆:画椭圆:对象名对象名.Circle step(x,y),半径半径,颜色颜色,纵横比纵横比画圆弧:画圆弧:对象名对象名.Circle step(x,y),半径半径,颜色颜色,起始角起始角,终止角终止角起始角和终止角以弧度为单位,而且依逆时针方向。起始角和终止角以弧度为单位,而且依逆时针方向。例:画图例:画图 ForeColor = vbBlue Line (10, 200)-(1000, 200) Line (500, 400)-(1300, 1000), vbRed, BF 矩

14、形矩形pi = 4 * Atn(1) Atn()为反正切函数,为反正切函数,Atn(1)等于等于Circle (800, 1500), 400, vbBlue 圆圆Circle (800, 2500), 600, vbBlue, , , 0.3 椭圆,横纵比为椭圆,横纵比为0.3Circle (2000, 1500), 400, , 0, pi / 2 圆弧圆弧Circle (3000, 1500), 400, , 0, -pi / 2 圆弧,负角能将半径画出圆弧,负角能将半径画出Circle (4000, 1500), 400, , -pi / 2, -pi9.2.4 设置图形属性设置图形属

15、性1.DrawWidth:设置点、直线、矩形边框等的粗细,格式为:设置点、直线、矩形边框等的粗细,格式为: 对象名对象名.Drawwidth=值(值(037767的整数)的整数)2.DrawStyle:用于指定画线的格式,格式为:用于指定画线的格式,格式为: 对象名对象名.Drawstyle=值值 0 实线,默认值实线,默认值 1 虚线虚线 2 点线点线 3 点划线点划线 4 双点划线双点划线 5 透明线透明线 6 内收实线内收实线 此属性只有此属性只有Drawwidth=1时起作用,否则相当于时起作用,否则相当于Drawstyle=0,只画实线。,只画实线。3.FillStyle用于设定填充

16、图案,格式:用于设定填充图案,格式: 对象名对象名.FillStyle=值值 0 全部填充全部填充 1 透明,默认值透明,默认值 2 水平直线水平直线 3 垂直直线垂直直线 4 上斜对角线上斜对角线 5 下斜对角线下斜对角线 6 十字线十字线 7 交叉对角线交叉对角线 4.FillColor:填充色:填充色实例实例9-19-1:验证绘图属性:验证绘图属性本例演示本例演示Forecolor、Drawwidth、Drawstyle、Fillstyle、Fillcolor等绘图属性等绘图属性在绘图方法中的作用。在绘图方法中的作用。实例实例9-29-2:CircleCircle用法用法本例说明本例说明

17、Circle方法的用法,方法的用法,拨动滑块可以观察横纵比拨动滑块可以观察横纵比的作用及起始角度、结束的作用及起始角度、结束角度为正负值时画弧和扇角度为正负值时画弧和扇形的不同。形的不同。实例实例9-39-3:橡皮擦:橡皮擦本例给出一个橡皮擦程序,此程序可用在本例给出一个橡皮擦程序,此程序可用在“画画图图”程序中作为一种擦除工具。程序中作为一种擦除工具。 9.3 9.3 与绘图有关的控件与绘图有关的控件9.3.1 直线控件直线控件9.3.2 形状控件形状控件9.3.3 直线、形状控件与绘图方法的区别直线、形状控件与绘图方法的区别9.3.1 直线控件直线控件Line直线控件用于显示一条线段,此线

18、段可以显示在窗体、直线控件用于显示一条线段,此线段可以显示在窗体、图片框、框架等容器内。图片框、框架等容器内。直线控件不具有事件直线控件不具有事件直线控件的常用属性:直线控件的常用属性:bordercolor:划线的颜色:划线的颜色borderstyle:划线的风格划线的风格borderwidth:划线的宽度:划线的宽度x1,y1:控件一端的:控件一端的x,y坐标坐标x2,y2:控件另一端的:控件另一端的x,y坐标坐标9.3.2 形状控件形状控件Shape形状控件用于显示矩形、圆角矩形、正方形、圆角正方形状控件用于显示矩形、圆角矩形、正方形、圆角正方形、圆、椭圆。形、圆、椭圆。可以在窗体、图片

19、框、框架等容器内使用形状控件。可以在窗体、图片框、框架等容器内使用形状控件。形状控件的常用属性:形状控件的常用属性:(1)backcolor:背景色:背景色(2)Backstyle:背景风格,:背景风格,0 透明;透明;1 不透明不透明(3)bordercolor:划线的颜色:划线的颜色(4)borderstyle:划线的风格划线的风格(5)borderwidth:划线的宽度:划线的宽度(6)Fillcolor:填充色:填充色(7)Fillstyle:填充风格:填充风格(8)Shape:指定控件的外观,取值为:指定控件的外观,取值为: 0 矩形,默认值矩形,默认值 1 正方形正方形 2 椭圆椭

20、圆 3 圆圆 4 圆角矩形圆角矩形 5 圆角正方形圆角正方形9.3.3 直线、形状控件与绘图方法的区别直线、形状控件与绘图方法的区别(1)(1)直线控件和形状控件表示的图形比绘图方法绘直线控件和形状控件表示的图形比绘图方法绘制的图形层次更高,绘图方法绘制的图形可能会制的图形层次更高,绘图方法绘制的图形可能会被控件覆盖,而直线控件和形状控件则不会。被控件覆盖,而直线控件和形状控件则不会。(2)(2)绘图方法绘制的图形能够被绘图方法绘制的图形能够被ClsCls方法清除,而方法清除,而直线控件和形状控件则不会。直线控件和形状控件则不会。(3)(3)直线控件和形状控件能够被移动、拖动、隐藏,直线控件和

21、形状控件能够被移动、拖动、隐藏,但绘图方法绘制的图形不能但绘图方法绘制的图形不能P171:案例:案例1电眼电眼 运行效果运行效果P175:案例:案例2绘图板绘图板 运行效果运行效果9.4 9.4 键盘事件键盘事件常用的与键盘有关的事件常用的与键盘有关的事件: KeyDown事件:事件:按键按下时触发按键按下时触发 KeyPress事件:事件:按键按下时触发按键按下时触发 KeyUp事件事件 :按键松开时触发按键松开时触发u按键按下时先触发按键按下时先触发KeyDown事件,后触发事件,后触发KeyPress事件事件uKeyUp事件触发在事件触发在KeyPress事件之后事件之后 KeyPres

22、s事件中得到的是按键对应的字符事件中得到的是按键对应的字符的的ASCII码码(KeyAscii) KeyUp,KeyDown事件中得到的是按键对应事件中得到的是按键对应的键号的键号(KeyCode),键盘,键盘104个键都对应着个键都对应着唯一的键号。唯一的键号。9.4.1 KeyPress事件事件对象的对象的KeyPress事件过程的一般格式:事件过程的一般格式:Privat Sub Object_KeyPress(KeyAscii As Integer) 语句块语句块End Sub如果对象是控件数组中的一个,则如果对象是控件数组中的一个,则KeyPress格式变为:格式变为:Private

23、 Sub Object_KeyPress(Index As Integer, KeyAscii As Integer) 语句块语句块End SubIndex代表控件数组中的索引值。代表控件数组中的索引值。例如例如 :利用利用KeyPress事件对键盘输入的值取舍。事件对键盘输入的值取舍。 程序运程序运行后要求输入大写字母,如果输入的是其它字符就响铃行后要求输入大写字母,如果输入的是其它字符就响铃报警,设计界面如下图:报警,设计界面如下图:Private Sub TxtUCase_KeyPress(KeyAscii As Integer) If KeyAscii 90 Then Beep Key

24、Ascii = 0 为空操作,不满足条件的字符在文本框中不回显为空操作,不满足条件的字符在文本框中不回显 End IfEnd Sub Dim PWord As String 口令口令Dim TryCount As Integer 重输次数重输次数Private Sub Form_Load() PWord = TryCount = 0End SubPrivate Sub TxtPWD_KeyPress(KeyAscii As Integer) If KeyAscii 13 Then 如果按键不是回车键如果按键不是回车键 If Len(TxtPWD.Text)+1 5 Then Beep KeyA

25、scii = 0 Else PWord = PWord & Chr(KeyAscii) KeyAscii = 42 42是是*的的ASCII码码 End If例例9-4:利用:利用KeyPress事件实现口令的验证事件实现口令的验证,口令设定为口令设定为“admin”。Else 如果按键是回车键如果按键是回车键 If PWord = “admin Then MsgBox 口令正确,欢迎使用口令正确,欢迎使用!, vbOKOnly, 提示提示 Unload Me Else TryCount = TryCount + 1 If TryCount 3 Then MsgBox 口令错误,请重新

26、输入口令错误,请重新输入!, vbOKOnly + vbExclamation, 警告警告 TxtPWD.Text = PWord = “” Else MsgBox 错误口令超过三次,错误口令超过三次, & vbCrLf & 按按OK退出程序退出程序!, vbOKOnly + vbExclamation, 警告警告 Unload Me End If End If End IfEnd Sub9.4.2 KeyDown和和KeyUp事件事件KeyDown和和KeyUp事件中返回的是事件中返回的是KeyCode(键号键号) ,同,同一个键上的两个字符,一个键上的两个字符,KeyCod

27、e是一样的,可通过是一样的,可通过Shift参数来确定上档键的状态参数来确定上档键的状态 。对象的对象的KeyDown和和KeyUp事件过程的一般格式为:事件过程的一般格式为:Private Sub Object_KeyDown(KeyCode As Integer, Shift As Integer) 语句块语句块End SubPrivate Sub Object_KeyUp(KeyCode As Integer, Shift As Integer) 语句块语句块End Sub 如果对象为控件数组时,还会有一个参数如果对象为控件数组时,还会有一个参数(Index), 代表控件数组中的代表控件

28、数组中的索引值。索引值。说明:说明:参数参数KeyCode是按键的键号,大、小写字母的键号相同,是按键的键号,大、小写字母的键号相同,为大写字母的为大写字母的ASCII码值码值不能显示的功能键和转换键盘,则只会触发不能显示的功能键和转换键盘,则只会触发KeyDown事事件,不会触发件,不会触发KeyPress事件事件 Shift是三个转换键的状态,包括是三个转换键的状态,包括Alt 、Ctrl 和和Shift,这三,这三个转换键可以只按下任意一个,也可以同时按下任意两个转换键可以只按下任意一个,也可以同时按下任意两个,还可以三个同时全都按下,这样就可以出现个,还可以三个同时全都按下,这样就可以

29、出现8种状态种状态。 Shift参数值参数值十进制数十进制数 二进制数二进制数 转换键状态转换键状态 0000没有按下转换键没有按下转换键 1001只按下只按下Shift键键 2010只按下只按下Ctrl键键4100只按下只按下Alt键键3011同时按下同时按下Shift和和Ctrl键键5101同时按下同时按下Shift和和Alt键键6110同时按下同时按下Ctrl和和Alt键键7111三个转换键全都按下三个转换键全都按下注意同时按下多个时注意同时按下多个时shift的值是按下单个值的相加的值是按下单个值的相加说明: 大部分的按键在大部分的按键在VB中都定义了中都定义了常量常量,例如,例如F1

30、键的常量键的常量是是vbKeyF1,Tab键的常量是键的常量是vbKeyTab,Home键的常量键的常量vbKeyHome。这些常量可以代替。这些常量可以代替keycode的值在程序中直的值在程序中直接使用接使用例例9-5:获得键号值的小程序:获得键号值的小程序Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Label1.Caption = Label1.Caption & vbCrLf & 按键的按键的KeyCode= & Str(KeyCode)End SubPrivate Sub For

31、m_KeyPress(KeyAscii As Integer) Label1.Caption = Label1.Caption & KeyPress= & Str(KeyAscii) & 字符:字符: & Chr(KeyAscii)End SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)Select Case KeyCode Case vbKeyF1: TxtShow.Text = TxtShow.Text & vbCrLf & 按下按下 & ShiftSt

32、atus(Shift) & 功能键功能键F1”.TxtShow.Text = TxtShow.Text & vbCrLf & 按下按下 & ShiftStatus(Shift) & 功能键功能键F6 Case vbKeyHome: TxtShow.Text = TxtShow.Text & vbCrLf & 按下按下 & ShiftStatus(Shift) & 功能键功能键Home Case vbKeyPageUp: TxtShow.Text = TxtShow.Text & vbCrLf & 按下按下

33、& ShiftStatus(Shift) & 功能键功能键PageUp End SelectEnd Sub例例9-6:演示:演示KeyDown事件及事件及Shift参数的作用。参数的作用。Function ShiftStatus(Shift As Integer) As StringSelect Case Shift Case 0: s = Case 1: s = “Shift+ Case 2: s = Ctrl+ Case 3: s = Shift+Ctrl+ Case 4: s = Alt+ Case 5: s = Shift+Alt+ Case 6: s = Ctrl+A

34、lt+ Case 7: s = Shift+Ctrl+Alt+ End Select ShiftStatus = sEnd Function注意(1 1)只有获得焦点的对象才能接受键盘事件。不活动的窗)只有获得焦点的对象才能接受键盘事件。不活动的窗体没有焦点;活动的窗体上面,同一时刻只能有一个焦体没有焦点;活动的窗体上面,同一时刻只能有一个焦点,有虚框的按钮获得焦点,光标所在处获得焦点,按点,有虚框的按钮获得焦点,光标所在处获得焦点,按TabTab键移动焦点。键移动焦点。(2 2)默认情况下,窗体上)默认情况下,窗体上控件的控件的键盘事件优先于窗体的键键盘事件优先于窗体的键盘事件。如果希望窗体

35、先接收键盘事件,则必须把窗体盘事件。如果希望窗体先接收键盘事件,则必须把窗体的的KeyPreviewKeyPreview属性设置为属性设置为TrueTrue,否则不能激活窗体的键,否则不能激活窗体的键盘事件。盘事件。例:方向键控制图片的移动Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)Select Case KeyCode Case vbKeyUp Image1.Top = Image1.Top - 50 Case vbKeyDown Image1.Top = Image1.Top + 50 Case vbKeyLe

36、ft Image1.Left = Image1.Left - 50 Case vbKeyRight Image1.Left = Image1.Left + 50End SelectEnd Sub9.5 鼠标事件当移动鼠标和按鼠标键时就会产生一些与鼠标有当移动鼠标和按鼠标键时就会产生一些与鼠标有关的事件。关的事件。9.5.1 鼠标事件类型鼠标事件类型单击单击(Click)和双击和双击(DblClidk)事件事件鼠标键按下鼠标键按下(MouseDown)事件和松开鼠标键事件和松开鼠标键(MouseUp)事件事件 移动鼠标事件移动鼠标事件(MouseMove)MouseDown和和MouseUP事件

37、事件Private Sub Object_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 语句块语句块End SubPrivate Sub Object_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 语句块语句块End SubMouseMove事件事件当鼠标光标从某个对象上移过时,触发移动鼠标光标当鼠标光标从某个对象上移过时,触发移动鼠标光标(MouseMove)事件事件格式为格式为 :Private

38、Sub Object_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 语句块语句块End Sub对象为控件数组时,会有一个参数对象为控件数组时,会有一个参数(Index)各参数意义:各参数意义:(1) (1) 鼠标键鼠标键(Button)(Button):大部分鼠标都是三个键,以前的是两个:大部分鼠标都是三个键,以前的是两个键,这样可出现键,这样可出现8种按键状态。种按键状态。十进制数十进制数 二进制数二进制数 转换键状态转换键状态 0000没有按下转换键没有按下转换键 1001只按下鼠标左键只按

39、下鼠标左键 2010只按下鼠标右键只按下鼠标右键 4100只按下鼠标中间键只按下鼠标中间键 3011同时按下鼠标左键和鼠标右键同时按下鼠标左键和鼠标右键 5101同时按下鼠标左键和鼠标中间键同时按下鼠标左键和鼠标中间键 6110同时按下鼠标右键和鼠标中间键同时按下鼠标右键和鼠标中间键 7111三个转换键全都按下三个转换键全都按下 各参数意义各参数意义(2) 转换键转换键(Shift) 按下、松开鼠标键和移动鼠标时三个转换键按下、松开鼠标键和移动鼠标时三个转换键(Shift,Ctrl,Alt)的状态的状态 ,三个转换键的状态和,三个转换键的状态和Shift参数的值与键盘事件参数的值与键盘事件的完

40、全一样。的完全一样。 (3) 鼠标位置鼠标位置(X和和Y)鼠标指针在接收鼠标事件的窗体或控件上的位置坐标,鼠标指针在接收鼠标事件的窗体或控件上的位置坐标,不需要用户设置,随鼠标光标的移动而变化。不需要用户设置,随鼠标光标的移动而变化。例:检测按下的是鼠标哪一个按钮例:检测按下的是鼠标哪一个按钮 Private sub Form_MouseDown(button as integer, shift as integer, x as single, y as single) select case button case 1 Msgbox 按下的是左键按下的是左键 case 2 Msgbox 按下

41、的是右键按下的是右键 case 4 Msgbox 按下的是中间键按下的是中间键 End selectEnd sub例例9-7:图像随鼠标移动:图像随鼠标移动在窗体上创建在窗体上创建1个个Image控件用来移动,控件用来移动,1个标签个标签用来显示鼠标的坐标用来显示鼠标的坐标 Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Image1.Move X, Y Label1.Caption = 位置:(位置:( & X & , & Y &

42、 )End Sub1. MousePointer属性属性p功能:设置鼠标光标的标准形状功能:设置鼠标光标的标准形状p取值范围:取值范围:015,99(自定义自定义)p设置方法:设置方法:通过属性窗口设置通过属性窗口设置在程序中设置在程序中设置Object.MousePointer=n9.5.2 鼠标的光标形状鼠标的光标形状 2 . MouseIcon属性属性功能:设置鼠标光标的自定义形状。功能:设置鼠标光标的自定义形状。(MousePointer=99)取值方式:取值方式:通过属性窗口通过属性窗口通过程序代码通过程序代码例:在窗体上显示所有类型的鼠标光标Private Sub Form_Cli

43、ck() Static i As Integer form1.MousePointer = i i = i + 1 If i = 16 Then i = 99 If i = 100 Then i = 0End Sub9.6 对象拖放对象拖放拖放:在屏幕上用鼠标把一个对象从一个位置拖拖放:在屏幕上用鼠标把一个对象从一个位置拖(Dragging)到另一个位置再放下到另一个位置再放下(Dropping)拖放的一般过程:将鼠标光标移动到一个控件对象上,拖放的一般过程:将鼠标光标移动到一个控件对象上,按下鼠标键,然后移动鼠标,对象随着鼠标的移动而在按下鼠标键,然后移动鼠标,对象随着鼠标的移动而在屏幕上移

44、动,松开鼠标对象被放下屏幕上移动,松开鼠标对象被放下 。除了除了菜单、计时器和通用对话框菜单、计时器和通用对话框以外,其余的控件均可以外,其余的控件均可在程序运行期间被拖放在程序运行期间被拖放 。1属性属性(1) DragMode:设置设置/返回拖放模式是自动的还是手动的。返回拖放模式是自动的还是手动的。 0-Manual拖放模式是手动的拖放模式是手动的(默认默认) 1-Automatic拖放模式是自动的拖放模式是自动的为了能对一个控件执行自动拖放操作,必须把它的属性为了能对一个控件执行自动拖放操作,必须把它的属性DragMode设置为设置为Automatic,即自由地被拖动。,即自由地被拖动

45、。注意注意: :设置为自动拖放后,控件将不再响应通常的鼠标事件设置为自动拖放后,控件将不再响应通常的鼠标事件(Click(Click、DblClickDblClick、MouseDownMouseDown、MouseUp)MouseUp)(2) DragIcon:设置设置/返回拖放操作中鼠标指针的图标。返回拖放操作中鼠标指针的图标。9.6.1 与拖放有关的属性、事件和方法与拖放有关的属性、事件和方法2事件事件(DragDrop和和DragOver)(1) DragDrop 当把控件当把控件(或图标或图标)拖到目标对象上之后,如果松开鼠标键拖到目标对象上之后,如果松开鼠标键,则会触发目标对象的,

46、则会触发目标对象的DragDrop事件。事件。Private Sub Object_DragDrop(Source As Control, X As Single, Y As Single) 事件处理代码事件处理代码End SubSource:类型为:类型为Control的对象变量,用来返回被拖放的对象的的对象变量,用来返回被拖放的对象的属性。通过属性。通过Source的的Name属性来判断被拖放的控件的名字,从属性来判断被拖放的控件的名字,从而决定该控件是否允许被放置在目标对象上。还可以在控件或图而决定该控件是否允许被放置在目标对象上。还可以在控件或图标被放下后,将它的标被放下后,将它的Vi

47、sible属性设置为属性设置为False,就象被放置在目,就象被放置在目标对象的内部。标对象的内部。X和和Y:返回松开鼠标键放下对象时鼠标光标的位置:返回松开鼠标键放下对象时鼠标光标的位置 。9.6.1 与拖放有关的属性、事件和方法与拖放有关的属性、事件和方法(2) DragOver当被拖放的控件当被拖放的控件(或图标或图标)越过越过某一个对象时,会触发该对某一个对象时,会触发该对象的象的DragOver事件,类似于控件的事件,类似于控件的MouseMove事件。事件。Private Sub Object_DragOver(Source As Control, X As Single, Y A

48、s Single, State As Integer)事件处理代码事件处理代码End SubState参数表示被拖动对象的状态,可以取参数表示被拖动对象的状态,可以取3个值个值:0-vbEnter 鼠标光标正在进入目标对象的区域鼠标光标正在进入目标对象的区域1-vbLeave鼠标光标正在离开目标对象的区域鼠标光标正在离开目标对象的区域2-vbOver鼠标光标正位于目标对象的区域之内鼠标光标正位于目标对象的区域之内9.6.1 与拖放有关的属性、事件和方法与拖放有关的属性、事件和方法3方法方法Move方法方法Drag方法:用来开始、结束或取消一个拖放操作方法:用来开始、结束或取消一个拖放操作Obj

49、ect.Drag DragActionDragAction为一个整型值,有三个值可以选择:为一个整型值,有三个值可以选择:0-vbCancel 取消进行中的任何拖放操作取消进行中的任何拖放操作1-BeginDrag 开始拖放操作开始拖放操作2-EndDrag 结束拖放操作并放置对象结束拖放操作并放置对象 9.6.1 与拖放有关的属性、事件和方法与拖放有关的属性、事件和方法9.6.2 自动拖放自动拖放将对象的将对象的DragMode属性设置为属性设置为1-Automatic,运行后,运行后,可用鼠标自由地拖动对象。但是鼠标键松开后,被拖动可用鼠标自由地拖动对象。但是鼠标键松开后,被拖动的对象又回

50、到原来位置。的对象又回到原来位置。需要在目标对象的需要在目标对象的DragDrop事件中,利用程序代码将事件中,利用程序代码将被拖动的对象移动到目标控件中:被拖动的对象移动到目标控件中: Object.Move X,Y 例例9-8:将三个按钮拖入图片框中,并按顺序排列。:将三个按钮拖入图片框中,并按顺序排列。Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single) Select Case Source.Name Case Command1: Command1.Move Picture1.Left , Picture1.Top Case Command2: Command2.Move Picture1.Left, Picture1.Top + Comm

温馨提示

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

评论

0/150

提交评论