?? 51.txt
字號:
一個用VB5.0 實現的鼠標繪圖程序
作者:殷聯甫
摘要:本文給出了一個用VB5.0實現的鼠標繪圖程序,對程序的主要功能及實現細節作 了詳細說明,并給出了部分源程序.
關鍵詞:VB5.0,可視化程序設計
1. 引言
MicroSoft公司推出的新一代可視化程序設計語言VB5.0以其功能強大和簡單易學而深受廣大程序設計人員的喜愛,人們用它開發出了許多絢麗多彩的應用程序,可以這樣說,VB5.0將成為最流行的可視化程序設計語言.
筆者在學習和使用VB5.0的過程中編制了一個實用的鼠標繪圖程序,現提供給大家,以供大家參考.
2. 程序主要功能
本繪圖程序的模塊結構圖如下所示:
鼠標繪圖程序:
文件
新建
裝入
保存
退出
繪圖
顏色
前景色
背景色
線寬
1象素寬
2象素寬
3象素寬
4象素寬
清除
3. 實現細節
本程序主要是實現用鼠標在窗體上繪圖,在繪圖過程中可選擇顏色及線寬,同時可將所繪圖形以位圖(.bmp)文件的形式存儲在盤上,也可將盤上的其它圖形文件調入窗體.
3.1 用鼠標在窗體上繪圖
利用窗體對象的MouseDown和MouseMove事件可實現鼠標在窗體上繪圖:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
CurrentX = X
CurrentY = Y
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button Then
Line -(X, Y), forcolor
End If
End Sub
其中forcolor為繪圖的前景色,在本程序中前景色由用戶選取.
3.2 顏色選取
利用通用對話框控件Commondialog的ShowColor方法可實現前景色和背景色的選取:
Private Sub mnubkcolor_Click()
CommonDialog1.CancelError = True
On Error GoTo errhandler
CommonDialog1.Flags = &H1&
CommonDialog1.ShowColor
BackColor = CommonDialog1.Color
Exit Sub
errhandler:
Exit Sub
End Sub
3.3 線寬的設置
通過設置窗體對象的屬性DrawWidth的值可實現繪圖時線寬的設置,DrawWidth=1時,線寬為1個象素,以此類推.
3.4 圖形的保存
結合使用通用對話框控件Commondialog的ShowSave方法和SavePicture語句可實現圖形的保存:
Private Sub mnusave_Click()
On Error GoTo errhandler
CommonDialog1.Filter = "bmp files(*.bmp)"
CommonDialog1.ShowSave
SavePicture Image, CommonDialog1.FileName
Exit Sub
errhandler:
Exit Sub
End Sub
3.5 圖形的調入
結合使用通用對話框控件Commondialog的ShowOpen方法和LoadPicture函數可實現圖形的調入:
Private Sub mnuload_Click()
On Error GoTo errhandler
CommonDialog1.Filter = "bmp files(*.bmp)"
CommonDialog1.ShowOpen
Picture = LoadPicture(CommonDialog1.FileName)
Exit Sub
errhandler:
Exit Sub
End Sub
4. 源程序清單
VERSION 5.00
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
Begin VB.Form frmdraw
AutoRedraw = -1 注釋:True
Caption = "繪圖工具軟件(嘉興高專機電系計算中心)"
ClientHeight = 4230
ClientLeft = 1140
ClientTop = 1815
ClientWidth = 6720
BeginProperty Font
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
Begin MSComDlg.CommonDialog CommonDialog1
Left = 4920
Top = 2880
_ExtentX = 847
_ExtentY = 847
_Version = 393216
End
Begin VB.Menu mnufile
Caption = "文件"
Begin VB.Menu mnunew
Caption = "新建"
End
Begin VB.Menu mnustepa
Caption = "-"
End
Begin VB.Menu mnuload
Caption = "裝入"
End
Begin VB.Menu mnustepb
Caption = "-"
End
Begin VB.Menu mnusave
Caption = "保存"
End
Begin VB.Menu mnustepc
Caption = "-"
End
Begin VB.Menu mnuexit
Caption = "退出"
End
End
Begin VB.Menu mnudraw
Caption = "繪圖"
Begin VB.Menu mnucolor
Caption = "顏色"
Begin VB.Menu mnuforcolor
Caption = "前景色"
End
Begin VB.Menu mnustep1a
Caption = "-"
End
Begin VB.Menu mnubkcolor
Caption = "背景色"
End
End
Begin VB.Menu mnustepg
Caption = "-"
End
Begin VB.Menu mnudrawwidth
Caption = "線寬"
Begin VB.Menu mnupixel1
Caption = "1象素寬"
End
Begin VB.Menu mnustep31
Caption = "-"
End
Begin VB.Menu mnupixel2
Caption = "2象素寬"
End
Begin VB.Menu mnustep32
Caption = "-"
End
Begin VB.Menu mnupixel3
Caption = "3象素寬"
End
Begin VB.Menu mnustep33
Caption = "-"
End
Begin VB.Menu mnupixel4
Caption = "4象素寬"
End
End
Begin VB.Menu mnustepf
Caption = "-"
End
Begin VB.Menu mnuclearz
Caption = "擦除"
Begin VB.Menu mnuclear1
Caption = "全部擦除"
End
Begin VB.Menu mnustepo
Caption = "-"
End
Begin VB.Menu mnuclear2
Caption = "部分擦除"
End
End
End
End
Attribute VB_Name = "frmdraw"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim forcolor As Long
Private Sub mnubkcolor_Click()
CommonDialog1.CancelError = True
On Error GoTo errhandler
CommonDialog1.Flags = &H1&
CommonDialog1.ShowColor
BackColor = CommonDialog1.Color
Exit Sub
errhandler:
Exit Sub
End Sub
Private Sub mnuclear1_Click()
Picture = LoadPicture("")
End Sub
Private Sub mnuforcolor_Click()
CommonDialog1.CancelError = True
On Error GoTo errhandler
CommonDialog1.Flags = &H1&
CommonDialog1.ShowColor
forcolor = CommonDialog1.Color
Exit Sub
errhandler:
Exit Sub
End Sub
Private Sub mnuexit_Click()
End
End Sub
Private Sub mnuload_Click()
On Error GoTo errhandler
CommonDialog1.Filter = "All Files(*.*)"
CommonDialog1.ShowOpen
Picture = LoadPicture(CommonDialog1.FileName)
Exit Sub
errhandler:
Exit Sub
End Sub
Private Sub mnunew_Click()
Picture = LoadPicture("")
End Sub
Private Sub mnupixel1_Click()
DrawWidth = 1
End Sub
Private Sub mnupixel2_Click()
DrawWidth = 2
End Sub
Private Sub mnupixel3_Click()
DrawWidth = 3
End Sub
Private Sub mnupixel4_Click()
DrawWidth = 4
End Sub
Private Sub mnusave_Click()
On Error GoTo errhandler
CommonDialog1.Filter = "All Files(*.*)"
CommonDialog1.ShowSave
SavePicture Image, CommonDialog1.FileName
Exit Sub
errhandler:
Exit Sub
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
CurrentX = X
CurrentY = Y
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button Then
Line -(X, Y), forcolor
End If
End Sub
5.結束語
本程序已在VB5.0環境下調試通過,有興趣的讀者可對該程序進行擴充,以完成更強的繪圖功能
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -