




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
用VB編寫畫圖程序用VB編寫畫圖程序用VB編寫畫圖程序資料僅供參考文件編號:2022年4月用VB編寫畫圖程序版本號:A修改號:1頁次:1.0審核:批準:發布日期:11.6.2
編寫一個仿Windows畫圖程序(1)本例將實現節中的一個仿Windows的簡單的畫圖軟件的任務。1.新建項目創建一個項目類型為VisualBasic,模板為Windows應用程序的項目,命名為Ch11_5。2.界面設計在窗體上添加:一個MenuStrip菜單控件、一個ToolStrip工具欄控件,一個用作繪圖板的PictureBox圖片框控件、兩個讓用戶選擇顏色和線條寬標志的Lable控件、5個讓用戶選擇線條寬度的button控件,一個Panel控件上、一個ImageList控件和一個作為狀態信息欄的StatusStripr。調整窗體上各控件的大小及位置,如圖11-18所示。
圖11-18
畫圖程序主界面3.設置各控件的相關屬性設置各控件的相關屬性,如表11-9所示。表11-9
畫圖程序各控件屬性設置
4.代碼設計(1)引入命名空間:Imports(2)在FrmPaint類里定義全局變量和mSelect枚舉結構:Private
g
As
Graphics
'繪圖句柄
Private
pstart
As
Point,
pend
As
Point
'定義畫圖的起始點,終點
Private
mChoice
As
Integer
'選擇圖形枚舉
Private
mWidth
As
Integer
'畫筆寬度
Private
mIcon
As
Icon
'用戶選擇圖標
Private
Enum
mSelect
'選擇圖形類別枚舉
Pencil
'鉛筆
Line
'直線
Ellipse
'橢圓
FillEllipse
'填充橢圓
StyleEllipse
'風格橢圓
Rec
'矩形
FillRec
'填充矩形
StyleRec
'風格矩形
Icon
'圖標
Eraser
'橡皮
EndEnum(3)在FrmPaint的Load事件中初始化全局變量和Graphics對象:Private
Sub
FrmPaint_Load(ByVal
sender
As
,
_
ByVal
e
As
Handles
g
=
'獲取PictureBox的繪圖句柄
mChoice
=
'默認選擇選鉛筆作為繪圖工具
mWidth
=
1
'初始化畫筆寬度
End
Sub
(4)定義轉換坐標起點和終點的過程Convert_Point()。轉換坐標起始點和終點,確保起始點始終在終點的左上方,代碼如下:'確保起始點坐標位于左上角
'結束點坐標位于右下角
Private
Sub
Convert_Point()
Dim
ptemp
As
Point
'用于交換的臨時點
If
<
Then
If
>
Then
=
=
=
End
If
End
If
If
>
Then
If
<
Then
=
=
=
End
If
If
>
Then
ptemp
=
pstart
pstart
=
pend
pend
=
ptemp
End
If
End
If
End
Sub
(5)為工具欄ItemClick事件編寫代碼:Private
Sub
tsPaint_ItemClicked(ByVal
sender
As
,
_
ByVal
e
As
ClickedEventArgs)
Handles
'獲取發生事件的索引號
=
If
mChoice
=
Then
'如果選擇的是圖標,則打開OpenFileDialog選取圖標
Dim
dlgOpen
As
New
OpenFileDialog
=
"圖標文件|*.ico"
If
=
Then
mIcon
=
New
Icon
End
If
End
If
(6)為btnSetColor控件的Click事件,編寫代碼,選擇畫筆顏色,代碼如下:Private
Sub
btnSetColor_Click(ByVal
sender
As
,
_
ByVal
e
As
Handles
'打開"顏色"對話框
Dim
dlgColor
As
New
ColorDialog
If
=
Then
=
End
If
End
Sub
(7)編寫選擇線條寬度的共享事件過程btnLines_Click()代碼:Private
Sub
btnLine_Click(ByVal
sender
As
,
ByVal
e
As
_
Handles
,
,
,
,
'把所有按鈕的背景色都設為Black
=
=
=
=
=
'用戶選中的按鈕背景色為Blue
CType(sender,
Button).BackColor
=
'把畫筆寬度設為用戶選擇按鈕的Tag值
mWidth
=
CType(sender,
Button).Tag
End
Sub
(8)為PictrueBox的MouseDown(鼠標按下)事件編寫代碼。在FrmPaint的代碼窗口頂部的"對象"下拉列表框中選擇picPaint,然后在右側的"事件"下拉列表框中選擇MouseDown,此時代碼編輯器中已經自動生成了picPaint_MouseUp的事件代碼,并把鼠標定位于事件過程內部的第一行,在該過程中編寫如下代碼:Private
Sub
picPaint_MouseDown(ByVal
sender
As
,
_
ByVal
e
As
Handles
If
=
Then
'如果用戶按下的是鼠標左鍵,則將當前點坐標賦給起始點
=
=
End
If
End
Sub
編寫一個仿Windows畫圖程序(3)(9)為PictrueBox的MouseUp(鼠標釋放)事件編寫代碼:Private
Sub
picPaint_MouseUp(ByVal
sender
As
,
_
ByVal
e
As
Handles
If
=
Then
'如果用戶按下的是鼠標左鍵,記錄終點坐標
=
=
'根據保存的mChoice繪制圖形
Select
Case
mChoice
Case
'用戶在工具欄中選擇的是鉛筆
Dim
myPen
As
New
Pen
mWidth)
(myPen,
pstart,
pend)
'根據起點和終點繪制直線
Case
'用戶在工具欄中選擇的是空心矩形
Convert_Point()
'轉換矩形的起點為其左上點
Dim
myPen
As
New
Pen
mWidth)
(myPen,
,
,
_
-
,
-
'
根據起點和終點繪制空心矩形
Case
'用戶在工具欄中選擇的是填充矩形
Convert_Point()
'轉換矩形的起點為其左上點
Dim
rec
As
New
Rectangle,
,
_
-
,
-
'根據起點和終點定義矩形
Dim
sbr
As
New
SolidBrush(btnSetColor.
BackColor)
'定義畫刷顏色為用戶選擇的顏色
(sbr,
rec)
'繪制填充矩形
Case
'用戶在工具欄中選擇的是風格矩形
Convert_Point()
'轉換矩形的起點為其左上點
Dim
rec
As
New
Rectangle,
,
_
-
,
-
'根據起點和終點定義矩形
'
定義畫刷風格為Cross型,前景色為白色,背景色為用戶選擇
Dim
hbr
As
New
HatchBrush,
,
(hbr,
rec)
'用畫刷填充矩形
Case
'用戶在工具欄中選擇的是空心橢圓
Convert_Point()
'轉換橢圓外接矩形的起點為其左上點
Dim
pen1
As
New
Pen,
mWidth)
(pen1,
,
,
_
-
,
-
'
根據橢圓外接矩形的起點和終點繪制橢圓
Case
'用戶在工具欄中選擇的是填充橢圓
Convert_Point()
'轉換橢圓外接矩形的起點為其左上點
Dim
rec
As
New
Rectangle,
,
_
-
,
-
'定義橢圓的外接矩形
Dim
sbr
As
New
SolidBrush(btnSetColor.
BackColor)
'定義畫刷顏色為用戶選擇的顏色
(sbr,
rec)
'用畫刷填充矩形
Case
'用戶在工具欄中選擇的是風格橢圓
Convert_Point()
'轉換橢圓外接矩形的起點為其左上點
Dim
rec
As
New
Rectangle,
,
_
-
,
-
'定義橢圓的外接矩形
'
定義畫刷風格為Cross型,前景色為白色,背景色為用戶選擇
Dim
hbr
As
New
HatchBrush,
,
(hbr,
rec)
'用畫刷填充矩形
End
Select
End
If
End
Sub
(10)為PictrueBox的MouseMove(鼠標移動)事件編寫代碼:Private
Sub
picPaint_MouseMove(ByVal
sender
As
,
_
ByVal
e
As
Handles
If
=
Then
'如果用戶按下的是鼠標左鍵,根據保存的mChoice繪制圖形
Select
Case
mChoice
Case
'用戶在工具欄中選擇的是鉛筆
Dim
pen1
As
New
Pen,
mWidth)
=
=
(pen1,
pstart,
pend)
pstart
=
pend
'將已經繪制的終點作為下一次的繪制的起點
Case
'用戶在工具欄中選擇的是橡皮
Dim
myPen
As
New
Pen,
mWidth)
'定義白色畫筆作為擦除效果
=
=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 日用玻璃制品企業ESG實踐與創新戰略研究報告
- 船用天文導航設備企業ESG實踐與創新戰略研究報告
- 2025-2030中國大氣污染防治行業市場深度調研及競爭格局與投資研究報告
- 2025-2030中國復合氧化物陶瓷行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國增稠劑穩定劑行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國取暖器行業發展趨勢與投資戰略研究報告
- 2025-2030中國即飲(RTD)茶和咖啡行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國華法林鈉(CAS 129-06-6)行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國醫院搖籃行業市場發展趨勢與前景展望戰略研究報告
- 2025-2030中國醫學照片陰道鏡行業市場發展趨勢與前景展望戰略研究報告
- 城市普通中小學校校舍建設標準
- 數字化時代的金融監管
- 《瘋狂動物城》全本臺詞中英文對照
- 金融風險傳染性研究
- 成人體外心肺復蘇專家共識(2023版)解讀
- 光伏電站事故處理規程
- 寵物共同撫養協議書范本
- 水源井工程施工方案
- (完整版)電路基礎選擇題100題
- 民族學考試試題和參考答案
- 日本工業標準JISH8641中文
評論
0/150
提交評論