摘要:本文給出了一個用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環境下調試通過,有興趣的讀者可對該程序進行擴充,以完成更強的繪圖功能->