




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
用VB編寫(xiě)畫(huà)圖程序用VB編寫(xiě)畫(huà)圖程序用VB編寫(xiě)畫(huà)圖程序資料僅供參考文件編號(hào):2022年4月用VB編寫(xiě)畫(huà)圖程序版本號(hào):A修改號(hào):1頁(yè)次:1.0審核:批準(zhǔn):發(fā)布日期:11.6.2
編寫(xiě)一個(gè)仿Windows畫(huà)圖程序(1)本例將實(shí)現(xiàn)節(jié)中的一個(gè)仿Windows的簡(jiǎn)單的畫(huà)圖軟件的任務(wù)。1.新建項(xiàng)目創(chuàng)建一個(gè)項(xiàng)目類型為VisualBasic,模板為Windows應(yīng)用程序的項(xiàng)目,命名為Ch11_5。2.界面設(shè)計(jì)在窗體上添加:一個(gè)MenuStrip菜單控件、一個(gè)ToolStrip工具欄控件,一個(gè)用作繪圖板的PictureBox圖片框控件、兩個(gè)讓用戶選擇顏色和線條寬標(biāo)志的Lable控件、5個(gè)讓用戶選擇線條寬度的button控件,一個(gè)Panel控件上、一個(gè)ImageList控件和一個(gè)作為狀態(tài)信息欄的StatusStripr。調(diào)整窗體上各控件的大小及位置,如圖11-18所示。
圖11-18
畫(huà)圖程序主界面3.設(shè)置各控件的相關(guān)屬性設(shè)置各控件的相關(guān)屬性,如表11-9所示。表11-9
畫(huà)圖程序各控件屬性設(shè)置
4.代碼設(shè)計(jì)(1)引入命名空間:Imports(2)在FrmPaint類里定義全局變量和mSelect枚舉結(jié)構(gòu):Private
g
As
Graphics
'繪圖句柄
Private
pstart
As
Point,
pend
As
Point
'定義畫(huà)圖的起始點(diǎn),終點(diǎn)
Private
mChoice
As
Integer
'選擇圖形枚舉
Private
mWidth
As
Integer
'畫(huà)筆寬度
Private
mIcon
As
Icon
'用戶選擇圖標(biāo)
Private
Enum
mSelect
'選擇圖形類別枚舉
Pencil
'鉛筆
Line
'直線
Ellipse
'橢圓
FillEllipse
'填充橢圓
StyleEllipse
'風(fēng)格橢圓
Rec
'矩形
FillRec
'填充矩形
StyleRec
'風(fēng)格矩形
Icon
'圖標(biāo)
Eraser
'橡皮
EndEnum(3)在FrmPaint的Load事件中初始化全局變量和Graphics對(duì)象:Private
Sub
FrmPaint_Load(ByVal
sender
As
,
_
ByVal
e
As
Handles
g
=
'獲取PictureBox的繪圖句柄
mChoice
=
'默認(rèn)選擇選鉛筆作為繪圖工具
mWidth
=
1
'初始化畫(huà)筆寬度
End
Sub
(4)定義轉(zhuǎn)換坐標(biāo)起點(diǎn)和終點(diǎn)的過(guò)程Convert_Point()。轉(zhuǎn)換坐標(biāo)起始點(diǎn)和終點(diǎn),確保起始點(diǎn)始終在終點(diǎn)的左上方,代碼如下:'確保起始點(diǎn)坐標(biāo)位于左上角
'結(jié)束點(diǎn)坐標(biāo)位于右下角
Private
Sub
Convert_Point()
Dim
ptemp
As
Point
'用于交換的臨時(shí)點(diǎn)
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事件編寫(xiě)代碼:Private
Sub
tsPaint_ItemClicked(ByVal
sender
As
,
_
ByVal
e
As
ClickedEventArgs)
Handles
'獲取發(fā)生事件的索引號(hào)
=
If
mChoice
=
Then
'如果選擇的是圖標(biāo),則打開(kāi)OpenFileDialog選取圖標(biāo)
Dim
dlgOpen
As
New
OpenFileDialog
=
"圖標(biāo)文件|*.ico"
If
=
Then
mIcon
=
New
Icon
End
If
End
If
(6)為btnSetColor控件的Click事件,編寫(xiě)代碼,選擇畫(huà)筆顏色,代碼如下:Private
Sub
btnSetColor_Click(ByVal
sender
As
,
_
ByVal
e
As
Handles
'打開(kāi)"顏色"對(duì)話框
Dim
dlgColor
As
New
ColorDialog
If
=
Then
=
End
If
End
Sub
(7)編寫(xiě)選擇線條寬度的共享事件過(guò)程btnLines_Click()代碼:Private
Sub
btnLine_Click(ByVal
sender
As
,
ByVal
e
As
_
Handles
,
,
,
,
'把所有按鈕的背景色都設(shè)為Black
=
=
=
=
=
'用戶選中的按鈕背景色為Blue
CType(sender,
Button).BackColor
=
'把畫(huà)筆寬度設(shè)為用戶選擇按鈕的Tag值
mWidth
=
CType(sender,
Button).Tag
End
Sub
(8)為PictrueBox的MouseDown(鼠標(biāo)按下)事件編寫(xiě)代碼。在FrmPaint的代碼窗口頂部的"對(duì)象"下拉列表框中選擇picPaint,然后在右側(cè)的"事件"下拉列表框中選擇MouseDown,此時(shí)代碼編輯器中已經(jīng)自動(dòng)生成了picPaint_MouseUp的事件代碼,并把鼠標(biāo)定位于事件過(guò)程內(nèi)部的第一行,在該過(guò)程中編寫(xiě)如下代碼:Private
Sub
picPaint_MouseDown(ByVal
sender
As
,
_
ByVal
e
As
Handles
If
=
Then
'如果用戶按下的是鼠標(biāo)左鍵,則將當(dāng)前點(diǎn)坐標(biāo)賦給起始點(diǎn)
=
=
End
If
End
Sub
編寫(xiě)一個(gè)仿Windows畫(huà)圖程序(3)(9)為PictrueBox的MouseUp(鼠標(biāo)釋放)事件編寫(xiě)代碼:Private
Sub
picPaint_MouseUp(ByVal
sender
As
,
_
ByVal
e
As
Handles
If
=
Then
'如果用戶按下的是鼠標(biāo)左鍵,記錄終點(diǎn)坐標(biāo)
=
=
'根據(jù)保存的mChoice繪制圖形
Select
Case
mChoice
Case
'用戶在工具欄中選擇的是鉛筆
Dim
myPen
As
New
Pen
mWidth)
(myPen,
pstart,
pend)
'根據(jù)起點(diǎn)和終點(diǎn)繪制直線
Case
'用戶在工具欄中選擇的是空心矩形
Convert_Point()
'轉(zhuǎn)換矩形的起點(diǎn)為其左上點(diǎn)
Dim
myPen
As
New
Pen
mWidth)
(myPen,
,
,
_
-
,
-
'
根據(jù)起點(diǎn)和終點(diǎn)繪制空心矩形
Case
'用戶在工具欄中選擇的是填充矩形
Convert_Point()
'轉(zhuǎn)換矩形的起點(diǎn)為其左上點(diǎn)
Dim
rec
As
New
Rectangle,
,
_
-
,
-
'根據(jù)起點(diǎn)和終點(diǎn)定義矩形
Dim
sbr
As
New
SolidBrush(btnSetColor.
BackColor)
'定義畫(huà)刷顏色為用戶選擇的顏色
(sbr,
rec)
'繪制填充矩形
Case
'用戶在工具欄中選擇的是風(fēng)格矩形
Convert_Point()
'轉(zhuǎn)換矩形的起點(diǎn)為其左上點(diǎn)
Dim
rec
As
New
Rectangle,
,
_
-
,
-
'根據(jù)起點(diǎn)和終點(diǎn)定義矩形
'
定義畫(huà)刷風(fēng)格為Cross型,前景色為白色,背景色為用戶選擇
Dim
hbr
As
New
HatchBrush,
,
(hbr,
rec)
'用畫(huà)刷填充矩形
Case
'用戶在工具欄中選擇的是空心橢圓
Convert_Point()
'轉(zhuǎn)換橢圓外接矩形的起點(diǎn)為其左上點(diǎn)
Dim
pen1
As
New
Pen,
mWidth)
(pen1,
,
,
_
-
,
-
'
根據(jù)橢圓外接矩形的起點(diǎn)和終點(diǎn)繪制橢圓
Case
'用戶在工具欄中選擇的是填充橢圓
Convert_Point()
'轉(zhuǎn)換橢圓外接矩形的起點(diǎn)為其左上點(diǎn)
Dim
rec
As
New
Rectangle,
,
_
-
,
-
'定義橢圓的外接矩形
Dim
sbr
As
New
SolidBrush(btnSetColor.
BackColor)
'定義畫(huà)刷顏色為用戶選擇的顏色
(sbr,
rec)
'用畫(huà)刷填充矩形
Case
'用戶在工具欄中選擇的是風(fēng)格橢圓
Convert_Point()
'轉(zhuǎn)換橢圓外接矩形的起點(diǎn)為其左上點(diǎn)
Dim
rec
As
New
Rectangle,
,
_
-
,
-
'定義橢圓的外接矩形
'
定義畫(huà)刷風(fēng)格為Cross型,前景色為白色,背景色為用戶選擇
Dim
hbr
As
New
HatchBrush,
,
(hbr,
rec)
'用畫(huà)刷填充矩形
End
Select
End
If
End
Sub
(10)為PictrueBox的MouseMove(鼠標(biāo)移動(dòng))事件編寫(xiě)代碼:Private
Sub
picPaint_MouseMove(ByVal
sender
As
,
_
ByVal
e
As
Handles
If
=
Then
'如果用戶按下的是鼠標(biāo)左鍵,根據(jù)保存的mChoice繪制圖形
Select
Case
mChoice
Case
'用戶在工具欄中選擇的是鉛筆
Dim
pen1
As
New
Pen,
mWidth)
=
=
(pen1,
pstart,
pend)
pstart
=
pend
'將已經(jīng)繪制的終點(diǎn)作為下一次的繪制的起點(diǎn)
Case
'用戶在工具欄中選擇的是橡皮
Dim
myPen
As
New
Pen,
mWidth)
'定義白色畫(huà)筆作為擦除效果
=
=
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 運(yùn)動(dòng)類視頻拍攝與剪輯要點(diǎn)
- 金融行業(yè)市場(chǎng)調(diào)研方法探討
- 跨國(guó)公司如何優(yōu)化投資組合
- 運(yùn)動(dòng)健康產(chǎn)業(yè)的創(chuàng)新發(fā)展與市場(chǎng)潛力探討
- 貴州企業(yè)招聘2024岑鞏縣潤(rùn)祥勞務(wù)派遣服務(wù)有限責(zé)任公司招聘筆試參考題庫(kù)附帶答案詳解
- 跨文化背景下的消費(fèi)者心理與營(yíng)銷策略
- 透視企業(yè)財(cái)報(bào)洞察行業(yè)動(dòng)態(tài)與未來(lái)發(fā)展趨勢(shì)
- 浙江國(guó)企招聘2024紹興嵊州市國(guó)有企業(yè)社會(huì)團(tuán)體公開(kāi)招聘4人筆試參考題庫(kù)附帶答案詳解
- 質(zhì)量成本控制在企業(yè)財(cái)務(wù)管理中的地位
- 跨境醫(yī)療旅游的商業(yè)模式與盈利途徑
- 汽車維修廠車輛進(jìn)出廠登記制度
- (2023版)高中化學(xué)新課標(biāo)知識(shí)考試題庫(kù)大全(含答案)
- 七年級(jí)語(yǔ)文下冊(cè)《孫權(quán)勸學(xué)》課后習(xí)題參考答案
- 2023年河北省安全生產(chǎn)舉報(bào)和獎(jiǎng)勵(lì)答試題及答案
- 馬鞍山晟捷新能源科技有限公司40萬(wàn)噸-年N-甲基吡咯烷酮項(xiàng)目環(huán)境影響報(bào)告表
- 工傷保險(xiǎn)待遇申請(qǐng)表
- 食品分析復(fù)習(xí)資料
- ROCHE甲功及腫瘤項(xiàng)目介紹專家講座
- 血液透析病人情況表
- 現(xiàn)代物流管理課后習(xí)題答案黃中鼎主編
- 35kV高壓電纜敷設(shè)專項(xiàng)施工方案方案
評(píng)論
0/150
提交評(píng)論