第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属性属性 如:如: Sca

2、lemode=4 窗体坐标系统以字符为长度单位窗体坐标系统以字符为长度单位 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) x y 窗体坐标系的属性:窗体坐标系的属性: ScaleTop, ScaleLeft:窗体容器的左上角的坐标:窗体容器的左上角的坐标 Sca

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

5、,它决定了控属性表示宽度和高度,它决定了控 件的大小。件的大小。 3. 其它控件容器的坐标系其它控件容器的坐标系 除窗体外,图片框(除窗体外,图片框(PictureBox)等控件也可以等控件也可以 作为其它控件的容器使用,也具有坐标系定义。作为其它控件的容器使用,也具有坐标系定义。 4. Scaletop, Scaleleft等与等与Top,Left的区别的区别 (1)窗体的)窗体的Top,Left,Width,Height属性的单位永远是属性的单位永远是Twip,而而 ScaleTop,ScaleLeft等属性可以通过等属性可以通过ScaleMode属性任意改属性任意改 变单位。变单位。 (

6、2)窗体的)窗体的Top,Left,Width,Height属性是相对屏幕坐标而言属性是相对屏幕坐标而言 的,而的,而ScaleTop,ScaleLeft,ScaleWidth,ScaleHeight则则 定义了窗体自己的坐标系统,窗体上的所有控件将以此为定义了窗体自己的坐标系统,窗体上的所有控件将以此为 坐标基础。坐标基础。 (3) ScaleWidth,ScaleHeight是指对象的内部尺寸,不包是指对象的内部尺寸,不包 括边框厚度以及菜单或标题等高度。而窗体的尺寸则由括边框厚度以及菜单或标题等高度。而窗体的尺寸则由 Width和和Height属性决定。属性决定。 5. 当前坐标当前坐标

7、 当在窗体等容器绘制图形或输出结果时,经常要当在窗体等容器绘制图形或输出结果时,经常要 将它们定位在某一希望的位置,这时就必须获得将它们定位在某一希望的位置,这时就必须获得 某一点的坐标,即当前坐标。某一点的坐标,即当前坐标。 CurrentX:设置:设置/返回当前坐标的水平坐标返回当前坐标的水平坐标 CurrentY:设置:设置/返回当前坐标的垂直坐标返回当前坐标的垂直坐标 例如,在点(例如,在点(13,2)处打印)处打印“X”: CurrentX=13:CurrentY=2:Print:”X” 6.6.改变坐标系改变坐标系 改变对象(如窗体)坐标系的方法:改变对象(如窗体)坐标系的方法:

8、对象名对象名.Scale (x1,y1)-(x2,y2) 其中其中(x1,y1)是窗体左上角的坐标,是窗体左上角的坐标,(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)-

9、(4800,0) 原点在左下角,原点在左下角,x轴向右,轴向右,y轴向上轴向上 Scale(-2400,1800)-(2400,-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 hello

10、End Sub 例:改变坐标系,通过例:改变坐标系,通过 Print查看点查看点 (ScaleLeft,ScaleTop) 的位置和原点的位置和原点(0,0)的位的位 置,理解坐标的设置置,理解坐标的设置 9.2 绘图方法绘图方法 9.2.1 画点画点Pset 9.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则表示以则

12、表示以(x1,y1)-(x2,y2)为端点的直线段。为端点的直线段。 省略省略step表示表示(x,y)是绝对坐标。是绝对坐标。 颜色表示直线或矩形边框的颜色,如果省略则为前景色。颜色表示直线或矩形边框的颜色,如果省略则为前景色。 例如:例如: Line(10,20)-(80,100) Line(500,400)-(1300,100),vbred,BF 画一个红色边框,以红色填充内部的矩形画一个红色边框,以红色填充内部的矩形 Forecolor=vbblue Line(500,400)-(1300,100),BF 画一个蓝色边框,以蓝色填充内部的矩形画一个蓝色边框,以蓝色填充内部的矩形 9.2

13、.3 画圆、椭圆、圆弧画圆、椭圆、圆弧 画圆:画圆: 对象名对象名.Circle step(x,y),半径半径,颜色颜色 其中,其中,(x,y)是圆心坐标,颜色为圆周颜色,要填充则需设是圆心坐标,颜色为圆周颜色,要填充则需设 置对象的置对象的Fillstyle和和Fillcolor属性。属性。 画椭圆:画椭圆: 对象名对象名.Circle step(x,y),半径半径,颜色颜色,纵横比纵横比 画圆弧:画圆弧: 对象名对象名.Circle step(x,y),半径半径,颜色颜色,起始角起始角,终止角终止角 起始角和终止角以弧度为单位,而且依逆时针方向。起始角和终止角以弧度为单位,而且依逆时针方向

14、。 例:画图例:画图 ForeColor = vbBlue Line (10, 200)-(1000, 200) Line (500, 400)-(1300, 1000), vbRed, BF 矩形矩形 pi = 4 * Atn(1) Atn()为反正切函数,为反正切函数,Atn(1)等于等于 Circle (800, 1500), 400, vbBlue 圆圆 Circle (800, 2500), 600, vbBlue, , , 0.3 椭圆,横纵比为椭圆,横纵比为0.3 Circle (2000, 1500), 400, , 0, pi / 2 圆弧圆弧 Circle (3000, 1

15、500), 400, , 0, -pi / 2 圆弧,负角能将半径画出圆弧,负角能将半径画出 Circle (4000, 1500), 400, , -pi / 2, -pi 9.2.4 设置图形属性设置图形属性 1.DrawWidth:设置点、直线、矩形边框等的粗细,格式为:设置点、直线、矩形边框等的粗细,格式为: 对象名对象名.Drawwidth=值(值(037767的整数)的整数) 2.DrawStyle:用于指定画线的格式,格式为:用于指定画线的格式,格式为: 对象名对象名.Drawstyle=值值 0 实线,默认值实线,默认值 1 虚线虚线 2 点线点线 3 点划线点划线 4 双点划

16、线双点划线 5 透明线透明线 6 内收实线内收实线 此属性只有此属性只有Drawwidth=1时起作用,否则相当于时起作用,否则相当于 Drawstyle=0,只画实线。,只画实线。 3.FillStyle 用于设定填充图案,格式:用于设定填充图案,格式: 对象名对象名.FillStyle=值值 0 全部填充全部填充 1 透明,默认值透明,默认值 2 水平直线水平直线 3 垂直直线垂直直线 4 上斜对角线上斜对角线 5 下斜对角线下斜对角线 6 十字线十字线 7 交叉对角线交叉对角线 4.FillColor:填充色:填充色 实例实例9-19-1:验证绘图属性:验证绘图属性 本例演示本例演示Fo

17、recolor、 Drawwidth、 Drawstyle、Fillstyle、 Fillcolor等绘图属性等绘图属性 在绘图方法中的作用。在绘图方法中的作用。 实例实例9-29-2:CircleCircle用法用法 本例说明本例说明Circle方法的用法,方法的用法, 拨动滑块可以观察横纵比拨动滑块可以观察横纵比 的作用及起始角度、结束的作用及起始角度、结束 角度为正负值时画弧和扇角度为正负值时画弧和扇 形的不同。形的不同。 实例实例9-39-3:橡皮擦:橡皮擦 本例给出一个橡皮擦程序,此程序可用在本例给出一个橡皮擦程序,此程序可用在“画画 图图”程序中作为一种擦除工具。程序中作为一种擦除

18、工具。 9.3 9.3 与绘图有关的控件与绘图有关的控件 9.3.1 直线控件直线控件 9.3.2 形状控件形状控件 9.3.3 直线、形状控件与绘图方法的区别直线、形状控件与绘图方法的区别 9.3.1 直线控件直线控件Line 直线控件用于显示一条线段,此线段可以显示在窗体、直线控件用于显示一条线段,此线段可以显示在窗体、 图片框、框架等容器内。图片框、框架等容器内。 直线控件不具有事件直线控件不具有事件 直线控件的常用属性:直线控件的常用属性: bordercolor:划线的颜色:划线的颜色 borderstyle:划线的风格划线的风格 borderwidth:划线的宽度:划线的宽度 x1

19、,y1:控件一端的:控件一端的x,y坐标坐标 x2,y2:控件另一端的:控件另一端的x,y坐标坐标 9.3.2 形状控件形状控件Shape 形状控件用于显示矩形、圆角矩形、正方形、圆角正方形状控件用于显示矩形、圆角矩形、正方形、圆角正方 形、圆、椭圆。形、圆、椭圆。 可以在窗体、图片框、框架等容器内使用形状控件。可以在窗体、图片框、框架等容器内使用形状控件。 形状控件的常用属性:形状控件的常用属性: (1)backcolor:背景色:背景色 (2)Backstyle:背景风格,:背景风格,0 透明;透明;1 不透明不透明 (3)bordercolor:划线的颜色:划线的颜色 (4)border

20、style:划线的风格划线的风格 (5)borderwidth:划线的宽度:划线的宽度 (6)Fillcolor:填充色:填充色 (7)Fillstyle:填充风格:填充风格 (8)Shape:指定控件的外观,取值为:指定控件的外观,取值为: 0 矩形,默认值矩形,默认值 1 正方形正方形 2 椭圆椭圆 3 圆圆 4 圆角矩形圆角矩形 5 圆角正方形圆角正方形 9.3.3 直线、形状控件与绘图方法的区别直线、形状控件与绘图方法的区别 (1)(1)直线控件和形状控件表示的图形比绘图方法绘直线控件和形状控件表示的图形比绘图方法绘 制的图形层次更高,绘图方法绘制的图形可能会制的图形层次更高,绘图方法

21、绘制的图形可能会 被控件覆盖,而直线控件和形状控件则不会。被控件覆盖,而直线控件和形状控件则不会。 (2)(2)绘图方法绘制的图形能够被绘图方法绘制的图形能够被ClsCls方法清除,而方法清除,而 直线控件和形状控件则不会。直线控件和形状控件则不会。 (3)(3)直线控件和形状控件能够被移动、拖动、隐藏,直线控件和形状控件能够被移动、拖动、隐藏, 但绘图方法绘制的图形不能但绘图方法绘制的图形不能 P171:案例:案例1电眼电眼 运行效果运行效果 P175:案例:案例2绘图板绘图板 运行效果运行效果 9.4 9.4 键盘事件键盘事件 常用的与键盘有关的事件常用的与键盘有关的事件: KeyDown

22、事件:事件:按键按下时触发按键按下时触发 KeyPress事件:事件:按键按下时触发按键按下时触发 KeyUp事件事件 :按键松开时触发按键松开时触发 u按键按下时先触发按键按下时先触发KeyDown事件,后触发事件,后触发 KeyPress事件事件 uKeyUp事件触发在事件触发在KeyPress事件之后事件之后 KeyPress事件中得到的是按键对应的字符事件中得到的是按键对应的字符 的的ASCII码码(KeyAscii) KeyUp,KeyDown事件中得到的是按键对应事件中得到的是按键对应 的键号的键号(KeyCode),键盘,键盘104个键都对应着个键都对应着 唯一的键号。唯一的键号

23、。 9.4.1 KeyPress事件事件 对象的对象的KeyPress事件过程的一般格式:事件过程的一般格式: Privat Sub Object_KeyPress(KeyAscii As Integer) 语句块语句块 End Sub 如果对象是控件数组中的一个,则如果对象是控件数组中的一个,则KeyPress格式变为:格式变为: Private Sub Object_KeyPress(Index As Integer, KeyAscii As Integer) 语句块语句块 End Sub Index代表控件数组中的索引值。代表控件数组中的索引值。 例如例如 :利用利用KeyPress事件

24、对键盘输入的值取舍。事件对键盘输入的值取舍。 程序运程序运 行后要求输入大写字母,如果输入的是其它字符就响铃行后要求输入大写字母,如果输入的是其它字符就响铃 报警,设计界面如下图:报警,设计界面如下图: Private Sub TxtUCase_KeyPress(KeyAscii As Integer) If KeyAscii 90 Then Beep KeyAscii = 0 为空操作,不满足条件的字符在文本框中不回显为空操作,不满足条件的字符在文本框中不回显 End If End Sub Dim PWord As String 口令口令 Dim TryCount As Integer 重输

25、次数重输次数 Private Sub Form_Load() PWord = TryCount = 0 End Sub Private Sub TxtPWD_KeyPress(KeyAscii As Integer) If KeyAscii 13 Then 如果按键不是回车键如果按键不是回车键 If Len(TxtPWD.Text)+1 5 Then Beep KeyAscii = 0 Else PWord = PWord & Chr(KeyAscii) KeyAscii = 42 42是是*的的ASCII码码 End If 例例9-4:利用:利用KeyPress事件实现口令的验证事件实现口令

26、的验证,口令设定为口令设定为 “admin”。 Else 如果按键是回车键如果按键是回车键 If PWord = “admin Then MsgBox 口令正确,欢迎使用口令正确,欢迎使用!, vbOKOnly, 提示提示 Unload Me Else TryCount = TryCount + 1 If TryCount 3 Then MsgBox 口令错误,请重新输入口令错误,请重新输入!, vbOKOnly + vbExclamation, 警告警告 TxtPWD.Text = PWord = “” Else MsgBox 错误口令超过三次,错误口令超过三次, & vbCrLf & 按按

27、OK退出程序退出程序!, vbOKOnly + vbExclamation, 警告警告 Unload Me End If End If End If End Sub 9.4.2 KeyDown和和KeyUp事件事件 KeyDown和和KeyUp事件中返回的是事件中返回的是KeyCode(键号键号) ,同,同 一个键上的两个字符,一个键上的两个字符,KeyCode是一样的,可通过是一样的,可通过Shift 参数来确定上档键的状态参数来确定上档键的状态 。 对象的对象的KeyDown和和KeyUp事件过程的一般格式为:事件过程的一般格式为: Private Sub Object_KeyDown(K

28、eyCode As Integer, Shift As Integer) 语句块语句块 End Sub Private Sub Object_KeyUp(KeyCode As Integer, Shift As Integer) 语句块语句块 End Sub 如果对象为控件数组时,还会有一个参数如果对象为控件数组时,还会有一个参数(Index), 代表控件数组中的代表控件数组中的 索引值。索引值。 说明:说明: 参数参数KeyCode是按键的键号,大、小写字母的键号相同,是按键的键号,大、小写字母的键号相同, 为大写字母的为大写字母的ASCII码值码值 不能显示的功能键和转换键盘,则只会触发不

29、能显示的功能键和转换键盘,则只会触发KeyDown事事 件,不会触发件,不会触发KeyPress事件事件 Shift是三个转换键的状态,包括是三个转换键的状态,包括Alt 、Ctrl 和和Shift,这三,这三 个转换键可以只按下任意一个,也可以同时按下任意两个转换键可以只按下任意一个,也可以同时按下任意两 个,还可以三个同时全都按下,这样就可以出现个,还可以三个同时全都按下,这样就可以出现8种状态种状态 。 Shift参数值参数值 十进制数十进制数 二进制数二进制数 转换键状态转换键状态 0000没有按下转换键没有按下转换键 1001只按下只按下Shift键键 2010只按下只按下Ctrl键

30、键 4100只按下只按下Alt键键 3011同时按下同时按下Shift和和Ctrl键键 5101同时按下同时按下Shift和和Alt键键 6110同时按下同时按下Ctrl和和Alt键键 7111三个转换键全都按下三个转换键全都按下 注意同时按下多个时注意同时按下多个时shift的值是按下单个值的相加的值是按下单个值的相加 说明: 大部分的按键在大部分的按键在VB中都定义了中都定义了常量常量,例如,例如F1键的常量键的常量 是是vbKeyF1,Tab键的常量是键的常量是vbKeyTab,Home键的常量键的常量 vbKeyHome。这些常量可以代替。这些常量可以代替keycode的值在程序中直的

31、值在程序中直 接使用接使用 例例9-5:获得键号值的小程序:获得键号值的小程序 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Label1.Caption = Label1.Caption & vbCrLf & 按键的按键的KeyCode= & Str(KeyCode) End Sub Private Sub Form_KeyPress(KeyAscii As Integer) Label1.Caption = Label1.Caption & KeyPress= & Str(KeyAscii) & 字符:字符:

32、& Chr(KeyAscii) End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyF1: TxtShow.Text = TxtShow.Text & vbCrLf & 按下按下 & ShiftStatus(Shift) & 功能键功能键F1” . TxtShow.Text = TxtShow.Text & vbCrLf & 按下按下 & ShiftStatus(Shift) & 功能键功能键F6 Case vbKeyHome: TxtShow.

33、Text = TxtShow.Text & vbCrLf & 按下按下 & ShiftStatus(Shift) & 功能键功能键Home Case vbKeyPageUp: TxtShow.Text = TxtShow.Text & vbCrLf & 按下按下 & ShiftStatus(Shift) & 功能键功能键PageUp End Select End Sub 例例9-6:演示:演示KeyDown事件及事件及Shift参数的作用。参数的作用。 Function ShiftStatus(Shift As Integer) As String Select Case Shift Case

34、 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+Alt+ Case 7: s = Shift+Ctrl+Alt+ End Select ShiftStatus = s End Function 注意 (1 1)只有获得焦点的对象才能接受键盘事件。不活动的窗)只有获得焦点的对象才能接受键盘事件。不活动的窗 体没有焦点;活动的窗体上面,同一时刻只能有一个焦体没有焦点;活动的窗体上面,同一时刻只能

35、有一个焦 点,有虚框的按钮获得焦点,光标所在处获得焦点,按点,有虚框的按钮获得焦点,光标所在处获得焦点,按 TabTab键移动焦点。键移动焦点。 (2 2)默认情况下,窗体上)默认情况下,窗体上控件的控件的键盘事件优先于窗体的键键盘事件优先于窗体的键 盘事件。如果希望窗体先接收键盘事件,则必须把窗体盘事件。如果希望窗体先接收键盘事件,则必须把窗体 的的KeyPreviewKeyPreview属性设置为属性设置为TrueTrue,否则不能激活窗体的键,否则不能激活窗体的键 盘事件。盘事件。 例:方向键控制图片的移动 Private Sub Form_KeyDown(KeyCode As Inte

36、ger, Shift As Integer) Select Case KeyCode Case vbKeyUp Image1.Top = Image1.Top - 50 Case vbKeyDown Image1.Top = Image1.Top + 50 Case vbKeyLeft Image1.Left = Image1.Left - 50 Case vbKeyRight Image1.Left = Image1.Left + 50 End Select End Sub 9.5 鼠标事件 当移动鼠标和按鼠标键时就会产生一些与鼠标有当移动鼠标和按鼠标键时就会产生一些与鼠标有 关的事件。关的

37、事件。 9.5.1 鼠标事件类型鼠标事件类型 单击单击(Click)和双击和双击(DblClidk)事件事件 鼠标键按下鼠标键按下(MouseDown)事件和松开鼠标键事件和松开鼠标键 (MouseUp)事件事件 移动鼠标事件移动鼠标事件(MouseMove) MouseDown和和MouseUP事件事件 Private Sub Object_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 语句块语句块 End Sub Private Sub Object_MouseUp(Button As In

38、teger, Shift As Integer, X As Single, Y As Single) 语句块语句块 End Sub MouseMove事件事件 当鼠标光标从某个对象上移过时,触发移动鼠标光标当鼠标光标从某个对象上移过时,触发移动鼠标光标 (MouseMove)事件事件 格式为格式为 : Private Sub Object_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 语句块语句块 End Sub 对象为控件数组时,会有一个参数对象为控件数组时,会有一个参数(Index) 各参数

39、意义:各参数意义: (1) (1) 鼠标键鼠标键(Button)(Button):大部分鼠标都是三个键,以前的是两个:大部分鼠标都是三个键,以前的是两个 键,这样可出现键,这样可出现8种按键状态。种按键状态。 十进制数十进制数 二进制数二进制数 转换键状态转换键状态 0000没有按下转换键没有按下转换键 1001只按下鼠标左键只按下鼠标左键 2010只按下鼠标右键只按下鼠标右键 4100只按下鼠标中间键只按下鼠标中间键 3011同时按下鼠标左键和鼠标右键同时按下鼠标左键和鼠标右键 5101同时按下鼠标左键和鼠标中间键同时按下鼠标左键和鼠标中间键 6110同时按下鼠标右键和鼠标中间键同时按下鼠标

40、右键和鼠标中间键 7111三个转换键全都按下三个转换键全都按下 各参数意义各参数意义 (2) 转换键转换键(Shift) 按下、松开鼠标键和移动鼠标时三个转换键按下、松开鼠标键和移动鼠标时三个转换键(Shift,Ctrl,Alt) 的状态的状态 ,三个转换键的状态和,三个转换键的状态和Shift参数的值与键盘事件参数的值与键盘事件 的完全一样。的完全一样。 (3) 鼠标位置鼠标位置(X和和Y) 鼠标指针在接收鼠标事件的窗体或控件上的位置坐标,鼠标指针在接收鼠标事件的窗体或控件上的位置坐标, 不需要用户设置,随鼠标光标的移动而变化。不需要用户设置,随鼠标光标的移动而变化。 例:检测按下的是鼠标哪

41、一个按钮例:检测按下的是鼠标哪一个按钮 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 按下的是右键按下的是右键 case 4 Msgbox 按下的是中间键按下的是中间键 End select End sub 例例9-7:图像随鼠标移动:图像随鼠标移动 在窗体上创建在窗体上创建1个个Image控件用来移动,控件用来移动,1个标签个标签 用来显示鼠

42、标的坐标用来显示鼠标的坐标 Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Image1.Move X, Y Label1.Caption = 位置:(位置:( & X & , & Y & ) End Sub 1. MousePointer属性属性 p功能:设置鼠标光标的标准形状功能:设置鼠标光标的标准形状 p取值范围:取值范围:015,99(自定义自定义) p设置方法:设置方法: 通过属性窗口设置通过属性窗口设置 在程序中设置在程序中设置Object.Mouse

43、Pointer=n 9.5.2 鼠标的光标形状鼠标的光标形状 2 . MouseIcon属性属性 功能:设置鼠标光标的自定义形状。功能:设置鼠标光标的自定义形状。 (MousePointer=99) 取值方式:取值方式: 通过属性窗口通过属性窗口 通过程序代码通过程序代码 例:在窗体上显示所有类型的鼠标光标 Private Sub Form_Click() Static i As Integer form1.MousePointer = i i = i + 1 If i = 16 Then i = 99 If i = 100 Then i = 0 End Sub 9.6 对象拖放对象拖放 拖放

44、:在屏幕上用鼠标把一个对象从一个位置拖拖放:在屏幕上用鼠标把一个对象从一个位置拖 (Dragging)到另一个位置再放下到另一个位置再放下(Dropping) 拖放的一般过程:将鼠标光标移动到一个控件对象上,拖放的一般过程:将鼠标光标移动到一个控件对象上, 按下鼠标键,然后移动鼠标,对象随着鼠标的移动而在按下鼠标键,然后移动鼠标,对象随着鼠标的移动而在 屏幕上移动,松开鼠标对象被放下屏幕上移动,松开鼠标对象被放下 。 除了除了菜单、计时器和通用对话框菜单、计时器和通用对话框以外,其余的控件均可以外,其余的控件均可 在程序运行期间被拖放在程序运行期间被拖放 。 1属性属性 (1) DragMod

45、e:设置设置/返回拖放模式是自动的还是手动的。返回拖放模式是自动的还是手动的。 0-Manual拖放模式是手动的拖放模式是手动的(默认默认) 1-Automatic拖放模式是自动的拖放模式是自动的 为了能对一个控件执行自动拖放操作,必须把它的属性为了能对一个控件执行自动拖放操作,必须把它的属性 DragMode设置为设置为Automatic,即自由地被拖动。,即自由地被拖动。 注意注意: :设置为自动拖放后,控件将不再响应通常的鼠标事件设置为自动拖放后,控件将不再响应通常的鼠标事件 (Click(Click、DblClickDblClick、MouseDownMouseDown、MouseUp

46、)MouseUp) (2) DragIcon:设置设置/返回拖放操作中鼠标指针的图标。返回拖放操作中鼠标指针的图标。 9.6.1 与拖放有关的属性、事件和方法与拖放有关的属性、事件和方法 2事件事件(DragDrop和和DragOver) (1) DragDrop 当把控件当把控件(或图标或图标)拖到目标对象上之后,如果松开鼠标键拖到目标对象上之后,如果松开鼠标键 ,则会触发目标对象的,则会触发目标对象的DragDrop事件。事件。 Private Sub Object_DragDrop(Source As Control, X As Single, Y As Single) 事件处理代码事件

47、处理代码 End Sub Source:类型为:类型为Control的对象变量,用来返回被拖放的对象的的对象变量,用来返回被拖放的对象的 属性。通过属性。通过Source的的Name属性来判断被拖放的控件的名字,从属性来判断被拖放的控件的名字,从 而决定该控件是否允许被放置在目标对象上。还可以在控件或图而决定该控件是否允许被放置在目标对象上。还可以在控件或图 标被放下后,将它的标被放下后,将它的Visible属性设置为属性设置为False,就象被放置在目,就象被放置在目 标对象的内部。标对象的内部。 X和和Y:返回松开鼠标键放下对象时鼠标光标的位置:返回松开鼠标键放下对象时鼠标光标的位置 。

48、9.6.1 与拖放有关的属性、事件和方法与拖放有关的属性、事件和方法 (2) DragOver 当被拖放的控件当被拖放的控件(或图标或图标)越过越过某一个对象时,会触发该对某一个对象时,会触发该对 象的象的DragOver事件,类似于控件的事件,类似于控件的MouseMove事件。事件。 Private Sub Object_DragOver(Source As Control, X As Single, Y As Single, State As Integer) 事件处理代码事件处理代码 End Sub State参数表示被拖动对象的状态,可以取参数表示被拖动对象的状态,可以取3个值个值:

49、 0-vbEnter 鼠标光标正在进入目标对象的区域鼠标光标正在进入目标对象的区域 1-vbLeave鼠标光标正在离开目标对象的区域鼠标光标正在离开目标对象的区域 2-vbOver鼠标光标正位于目标对象的区域之内鼠标光标正位于目标对象的区域之内 9.6.1 与拖放有关的属性、事件和方法与拖放有关的属性、事件和方法 3方法方法 Move方法方法 Drag方法:用来开始、结束或取消一个拖放操作方法:用来开始、结束或取消一个拖放操作 Object.Drag DragAction DragAction为一个整型值,有三个值可以选择:为一个整型值,有三个值可以选择: 0-vbCancel 取消进行中的任

50、何拖放操作取消进行中的任何拖放操作 1-BeginDrag 开始拖放操作开始拖放操作 2-EndDrag 结束拖放操作并放置对象结束拖放操作并放置对象 9.6.1 与拖放有关的属性、事件和方法与拖放有关的属性、事件和方法 9.6.2 自动拖放自动拖放 将对象的将对象的DragMode属性设置为属性设置为1-Automatic,运行后,运行后, 可用鼠标自由地拖动对象。但是鼠标键松开后,被拖动可用鼠标自由地拖动对象。但是鼠标键松开后,被拖动 的对象又回到原来位置。的对象又回到原来位置。 需要在目标对象的需要在目标对象的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.L

温馨提示

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

评论

0/150

提交评论