摘要:本文给出了一个用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环境下调试通过,有兴趣的读者可对该程序进行扩充,以完成更强的绘图功能->
|