【 tulaoshi.com - 编程语言 】
摘要:本文给出了一个用VB5.0实现的鼠标绘图程序,对程序的主要功能及实现细节作了详细说明,并给出了部分源程序.
关键词:VB5.0,可视化程序设计
1.引言
MicroSoft公司推出的新一代可视化程序设计语言VB5.0以其功能强大和简单易学而深受广大程序设计人员的喜爱,人们用它开发出了许多绚丽多彩的应用程序,可以这样说,VB5.0将成为最流行的可视化程序设计语言.
笔者在学习和使用VB5.0的过程中编制了一个实用的鼠标绘图程序,现提供给大家,以供大家参考.
2.程序主要功能
本绘图程序的模块结构图如下所示:
鼠标绘图程序:
文件
新建
装入
保存
退出
绘图
颜色
前景色
背景色
线宽
1象素宽
2象素宽
3象素宽
4象素宽
清除
3.实现细节
本程序主要是实现用鼠标在窗体上绘图,在绘图过程中可选择颜色及线宽,同时可将所绘图形以位图(.bmp)文件的形式存储在盘上,也可将盘上的其它图形文件调入窗体.
3.1用鼠标在窗体上绘图
利用窗体对象的MouseDown和MouseMove事件可实现鼠标在窗体上绘图:
PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
CurrentX=X
CurrentY=Y
EndSub
PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButtonThen
Line-(X,Y),forcolor
EndIf
EndSub
其中forcolor为绘图的前景色,在本程序中前景色由用户选取.
3.2颜色选取
利用通用对话框控件Commondialog的ShowColor方法可实现前景色和背景色的选取:
PrivateSubmnubkcolor_Click()
CommonDialog1.CancelError=True
OnErrorGoToerrhandler
CommonDialog1.Flags=&H1&
CommonDialog1.ShowColor
BackColor=CommonDialog1.Color
ExitSub
errhandler:
ExitSub
EndSub
3.3线宽的设置
通过设置窗体对象的属性DrawWidth的值可实现绘图时线宽的设置,DrawWidth=1时,线宽为1个象素,以此类推.
3.4图形的保存
结合使用通用对话框控件Commondialog的ShowSave方法和SavePicture语句可实现图形的保存:
PrivateSubmnusave_Click()
OnErrorGoToerrhandler
CommonDialog1.Filter="bmpfiles(*.bmp)"
CommonDialog1.ShowSave
SavePictureImage,CommonDialog1.FileName
ExitSub
errhandler:
ExitSub
EndSub
3.5图形的调入
结合使用通用对话框控件Commondialog的ShowOpen方法和LoadPicture函数可实现图形的调入:
PrivateSubmnuload_Click()
OnErrorGoToerrhandler
CommonDialog1.Filter="bmpfiles(*.bmp)"
CommonDialog1.ShowOpen
Picture=LoadPicture(CommonDialog1.FileName)
ExitSub
errhandler:
ExitSub
EndSub
4.源程序清单
VERSION5.00
Object="{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0";"COMDLG32.OCX"
BeginVB.Formfrmdraw
AutoRedraw=-1'True
Caption="绘图工具软件(嘉兴高专机电系计算中心)"
ClientHeight=4230
ClientLeft=1140
ClientTop=1815
ClientWidth=6720
BeginPropertyFont
Name="隶书"
Size=5.25
Charset=134
Weight=400
Underline=0'False
Italic=0'False
Strikethrough=0'False
EndProperty
LinkTopic="Form1"
PaletteMode=1'UseZOrder
ScaleHeight=4230
ScaleWidth=6720
WindowState=2'Maximized
BeginMSComDlg.CommonDialogCommonDialog1
Left=4920
Top=2880
_ExtentX=847
_ExtentY=847
_Version=393216
End
BeginVB.Menumnufile
Caption="文件"
BeginVB.Menumnunew
Caption="新建"
End
BeginVB.Menumnustepa
Caption="-"
End
BeginVB.Menumnuload
Caption="装入"
End
BeginVB.Menumnustepb
Caption="-"
End
BeginVB.Menumnusave
Caption="保存"
End
BeginVB.Menumnustepc
Caption="-"
End
BeginVB.Menumnuexit
Caption="退出"
End
End
BeginVB.Menumnudraw
Caption="绘图"
BeginVB.Menumnucolor
Caption="颜色"
BeginVB.Menumnuforcolor
Caption="前景色"
End
BeginVB.Menumnustep1a
Caption="-"
End
BeginVB.Menumnubkcolor
Caption="背景色"
End
End
BeginVB.Menumnustepg
Caption="-"
End
BeginVB.Menumnudrawwidth
Caption="线宽"
BeginVB.Menumnupixel1
Caption="1象素宽"
End
BeginVB.Menumnustep31
Caption="-"
End
BeginVB.Menumnupixel2
Caption="2象素宽"
End
BeginVB.Menumnustep32
Caption="-"
End
BeginVB.Menumnupixel3
Caption="3象素宽"
End
BeginVB.Menumnustep33
Caption="-"
End
BeginVB.Menumnupixel4
Caption="4象素宽"
End
End
BeginVB.Menumnustepf
Caption="-"
End
BeginVB.Menumnuclearz
Caption="擦除"
BeginVB.Menumnuclear1
Caption="全部擦除"
End
BeginVB.Menumnustepo
Caption="-"
End
BeginVB.Menumnuclear2
Caption="部分擦除"
End
End
End
End
AttributeVB_Name="frmdraw"
AttributeVB_GlobalNameSpace=False
AttributeVB_Creatable=False
AttributeVB_PredeclaredId=True
AttributeVB_Exposed=False
DimforcolorAsLong
PrivateSubmnubkcolor_Click()
CommonDialog1.CancelError=True
OnErrorGoToerrhandler
CommonDialog1.Flags=&H1&
CommonDialog1.ShowColor
BackColor=CommonDialog1.Color
ExitSub
errhandler:
ExitSub
EndSub
PrivateSubmnuclear1_Click()
Picture=LoadPicture("")
EndSub
PrivateSubmnuforcolor_Click()
CommonDialog1.CancelError=True
OnErrorGoToerrhandler
CommonDialog1.Flags=&H1&
CommonDialog1.ShowColor
forcolor=CommonDialog1.Color
ExitSub
errhandler:
ExitSub
EndSub
PrivateSubmnuexit_Click()
End
EndSub
PrivateSubmnuload_Click()
OnErrorGoToerrhandler
CommonDialog1.Filter="AllFiles(*.*)"
CommonDialog1.ShowOpen
Picture=LoadPicture(CommonDialog1.FileName)
ExitSub
errhandler:
ExitSub
EndSub
PrivateSubmnunew_Click()
Picture=LoadPicture("")
EndSub
PrivateSubmnupixel1_Click()
DrawWidth=1
EndSub
PrivateSubmnupixel2_Click()
DrawWidth=2
EndSub
PrivateSubmnupixel3_Click()
DrawWidth=3
EndSub
PrivateSubmnupixel4_Click()
DrawWidth=4
EndSub
PrivateSubmnusave_Click()
OnErrorGoToerrhandler
CommonDialog1.Filter="AllFiles(*.*)"
CommonDialog1.ShowSave
SavePictureImage,CommonDialog1.FileName
ExitSub
errhandler:
ExitSub
EndSub
PrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
CurrentX=X
CurrentY=Y
EndSub
PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
IfButtonThen
Line-(X,Y),forcolor
EndIf
EndSub
5.结束语
本程序已在VB5.0环境下调试通过,有兴趣的读者可对该程序进行扩充,以完成更强的绘图功能->