时间:2022-07-28 02:34:12
摘要:本文介绍在Visual Basic语言编程环境中,利用鼠标mousedown、mousemove和mouseup事件,建立一个可供写字或绘图的窗口,将其编译成在桌面上可执行的文件,代替教学用粉笔写字或绘图。
关键词:VB;鼠标;事件;窗口
中图分类号:TP37文献标识码:A文章编号:1009-3044(2007)16-31138-02
Imitate a painting function with the language realization of the Visual Basic
JIANG Chao-bing,lV Miao-miao
Yancheng Health Vocational and Technical College , Jiangsu ,Yancheng 224006
Abstract:This text introduces making use of mouse mousedown、 mousemove and mouseup events in the Visual Basic language program environment, build up a window way that can provide write or paint ,by compiled it to a file which can be carried out on the desktop by double click with mouse, replace teaching to use chalk lettering or painting.
Key words:VB;mouse;event;window
1 引言
随着多媒体教学手段的普及和精品课程的推广,越来越多的教师逐步摆脱了粉笔上课方式,将教学内容通过WEB方式或课件方式讲授。然而在上课过程中,根据课程的不同和教学内容的需要,仍需临时书写文字或绘制图形。本文给出利用VB提供的鼠标事件,给出常用的几种色彩,制作出在桌面可直接执行的文件,供教学中临时写字或绘制简单图形的窗口,满足了教学的需要,供读者参考。
2 窗体事件和功能
在窗口中,直接移动鼠标时,不能画出线,而当鼠标按下后,移动鼠标时,根据鼠标移动的轨迹,画出图形或线段;当松开鼠标时,停止画线。
在窗口左下角提供常用几种颜色,用鼠标单击选中相应的颜色,该颜色为随后画线的颜色;
单击直线按钮,再在窗口中拖动时,从鼠标拖动时起点到松开鼠标时为终点,根据选择颜色绘制一条直线;
单击画圆按钮,再在窗口中拖动时,以鼠标拖动时起点为圆心,以松开鼠标点到起点为半径,根据所选颜色,画一个圆;
在窗口右上角有一文本框,初始时隐藏,窗口下方有一命令按钮,标题为“显示文本框”,单击该命令按钮,显示文件框,可输入临时性文本,同时标题改变为“隐藏文本框”,再单击,则隐藏该文本框;
在窗口中双击鼠标时,清除窗口中所画线段,可重新绘图或书写文字。
3 制作和编写程序代码
启动VB后,建立新的工程,设置窗口的大小,将窗体标题改为“绘图窗口”,在窗体左下角分别添加5个标签,清空标题,背景颜色分别为黑、红、蓝、绿、白5种常用颜色。添加4个命令按钮,标题分别为“直线”、“画圆”、“退出”、“显示文本框”。在窗体右上角添加一个文本框,在属性窗口设置相应的字体、大小、颜色。
在代码窗体加入如下程序代码:
Dim paintnow As Boolean‘模块级布尔类型变量,
Dim line1 As Integer‘模块级变量LINE1,用来传递是否选中画直线;
Dim circle1 As Integer ‘模块级变量circle1,用来传递是否选中画圆;
Dim x1 As Integer ‘X1,Y1 传递鼠标按下点的坐标值;
Dim y1 As Integer
Dim x2 As Integer‘X2,Y2 传递鼠标松开时,鼠标所在点的坐标;
Dim y2 As Integer
‘窗体双击事件,用来清窗口所绘内容,实现重新绘图或写字;
Private Sub Form_DblClick()
Cls
Text1.text=””
End Sub
‘单击命令按钮1,给LINE1赋值1,将此值传递给Mousedown事件,确定是否画直线;
Private Sub Command1_Click()
line1 = 1
End Sub
‘单击命令按钮2,给circle1赋值1,将此值传递给Mousedown事件,确定是否画圆;
Private Sub Command2_Click()
circle1 = 1
End Sub
‘单击命令按钮3,结束程序运行;
Private Sub Command3_Click()
End
End Sub
‘显示和隐藏文本框
Private Sub Command4_Click()
If Command4.Caption = "显示文本框" Then
Text1.Visible = True
Command4.Caption = "隐藏文本框"
Else
Text1.Visible = False
Command4.Caption = "显示文本框"
End If
End Sub
‘窗体加载事件,确定线宽为2,初始颜色为黑色;
Private Sub Form_Load()
DrawWidth = 2
ForeColor = RGB(0, 0, 0)
End Sub
‘鼠标按下去事件,通过模块级变量传递可以画点的信息;
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
paintnow = True
If line1 = 1 Or circle1 = 1 Then
x1 = X
y1 = Y
MousePointer = 2
End If
End Sub
‘鼠标移动事件,根据模块级变量的值,确定是否在鼠标当前位置画点;
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If paintnow Then
PSet (X, Y)
End If
End Sub
‘鼠标松开事件,通过模块级变量传递画点结束、画直线结束、画圆时圆周上点位置的信息;
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
paintnow = False
If line1 = 1 Then
x2 = X
y2 = Y
Line (x1, y1)-(x2, y2)
line1 = 0
MousePointer = 0
End If
If circle1 = 1 Then
x2 = X
y2 = Y
Circle (x1, y1), Sqr((x1 - x2) ^ 2 + (y1 - y2) ^ 2)
circle1 = 0
MousePointer = 0
End If
End Sub
‘确定当前绘图所用颜色;
Private Sub Label1_Click()
ForeColor = RGB(255, 0, 0)
End Sub
Private Sub Label2_Click()
ForeColor = RGB(0, 0, 255)
End Sub
Private Sub Label3_Click()
ForeColor = RGB(0, 255, 0)
End Sub
Private Sub Label4_Click()
ForeColor = RGB(0, 0, 0)
End Sub
Private Sub Label5_Click()
ForeColor = RGB(255, 255, 255)
End Sub
4 编译形成桌面可执行文件
通过VB窗口的文件菜单,单击“生成 FRM_HT.EXE…”菜单项,选择生成文件存放的位置(如直接放置在桌面),输入生成可执行文件的文件名(绘图窗口.exe),单击确定按钮,即可生成可执行文件。
在上课过程中,只要将该窗口打开,在需要使用时,用Alt+Tab组合键切换窗口,即可实现临时绘图的功能,使用非常方便。
参考文献:
[1]林永,张乐强.Visual Basic 6.0用户编程手册.人民邮电出版社出版,1999,11月第1版,ISBN 7-115-07672-3/TP 1024.
[2](美)布洛雷(Brierley,E)等.王建华.等.译.Visual Basic 6 开发人员指南(The Waite Group’s Visual Basic 6. How-To).机械工业出版社,1999年1月第1版,ISBN 7-111-06985-4.
注:“本文中所涉及到的图表、公式注解等形式请以PDF格式阅读原文。”