用VB編寫(xiě)畫(huà)圖程序_第1頁(yè)
用VB編寫(xiě)畫(huà)圖程序_第2頁(yè)
用VB編寫(xiě)畫(huà)圖程序_第3頁(yè)
用VB編寫(xiě)畫(huà)圖程序_第4頁(yè)
用VB編寫(xiě)畫(huà)圖程序_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1 1.6.2編寫(xiě)一個(gè)仿Windows畫(huà)圖程序(1)本例將實(shí)現(xiàn)11.1節(jié)中的一個(gè)仿Windows的簡(jiǎn)單的畫(huà)圖軟件的任務(wù)。2 .新建項(xiàng)目創(chuàng)建一個(gè)項(xiàng)目類(lèi)型為VisualBasic,模板為Windows應(yīng)用程序的項(xiàng)目,命名為Ch11_5。3 .界面設(shè)計(jì)在窗體上添加:一個(gè)MenuStrip菜單控件、一個(gè)ToolStrip工具欄控件,一個(gè)用作繪圖板的PictureBox圖片框控件、兩個(gè)讓用戶(hù)選擇顏色和線條寬標(biāo)志的Lable控件、5個(gè)讓用戶(hù)選擇線條寬度的button控件,一個(gè)Panel控件上、一個(gè)ImageList控件和一個(gè)作為狀態(tài)信息欄的StatusStripr。調(diào)整窗體上各控件的大小及位置,如圖11-

2、18所示。JATM匚值原圖11-18畫(huà)圖程序主界面4 .設(shè)置各控件的相關(guān)屬性設(shè)置各控件的相關(guān)屬性,如表11-9所示。表11-9畫(huà)圖程序各控件屬性設(shè)置控件類(lèi)別戶(hù)局性名屬性旨IF口世皿TckR畫(huà)圖軟件爐Nam孑FtinPaint-Menutexlt1文件(即)爐族表:|控件類(lèi)別廣屬性名B性的Meu求皿尸Nam*1mgP疝川ToolStripMenu.ltem-Nam爐miFileTest/1文件(史ToolStripMenultcm*Nam"miNewtest*3新建(汶N)WToolStripMenultem<Nam*miEirit用tertu退出C&X)/ToolStr

3、ipMenultan-Name*'miOperatorTeste操作(品如TciolStripqMarner任Pain/工具欄口II4H始#|UbUttMlliIhLwiviULIi®i4F回tlMWiMUei:S1CT0.coiaXMlinas«Lisk'Namy一.:JImagesi<國(guó)?«(r|11,4三n點(diǎn)日巾3E日41s日工0ar(*PictureEox+JName'picFaintBackcolor*WhiterBorderStyIe*FIMfLabelsMa畫(huà)篁賴(lài)色甲Label/text線條寬度爐PanelsBorder

4、StyleFixed3DBgColortJWhit5個(gè)ButtonNamebUiLinel,btnLine2p丁btnLinekiLirLe4,btnLineS,*5Imagtlndsx-'。2必ImageList*imgListIk912M5小FlatStyl即Flat/Button'BgColor'Blue-Name*1btnSetcolon-1J'iWV1FlatStyle*Flat-';.,4.代碼設(shè)計(jì)(1)引入命名空間:ImportsSystem.Drawing.Drawing2D(2)在FrmPaint類(lèi)里定義全局變量和mSelect枚舉結(jié)構(gòu)

5、:1.PrivategAsGraphics'繪圖句柄2.PrivatepstartAsPoint,pendAsPoint'定義畫(huà)圖的起始點(diǎn),終點(diǎn)3.PrivatemChoiceAsInteger'選擇圖形枚舉4.PrivatemWidthAsInteger'畫(huà)筆寬度5.PrivatemIconAsIcon'用戶(hù)選擇圖標(biāo)6.PrivateEnummSelect'選擇圖形類(lèi)別枚舉7.Pencil鉛筆8.Line直線9.Ellipse橢圓10.FillEllipse填充橢圓11.StyleEllipse風(fēng)格橢圓12.Rec'矩形13.FillR

6、ec填充矩形14.StyleRec風(fēng)格矩形15.Icon圖標(biāo)16.Eraser橡皮17.EndEnum(3)在FrmPaint的Load事件中初始化全局變量和Graphics對(duì)象:1. PrivateSubFrmPaint_Load(ByValsenderAsSystem.Object,_2. ByValeAsSystem.EventArgs)HandlesMyBase.Load3.4. g=Me.picPaint.CreateGraphics'獲取PictureBox的繪圖句柄5. mChoice=mSelect.Pencil'默認(rèn)選擇選鉛筆作為繪圖工具6. mWidth=1

7、'初始化畫(huà)筆寬度7. EndSub(4)定義轉(zhuǎn)換坐標(biāo)起點(diǎn)和終點(diǎn)的過(guò)程Convert_Point()。轉(zhuǎn)換坐標(biāo)起始點(diǎn)和終點(diǎn),確保起始點(diǎn)始終在終點(diǎn)的左上方,代碼如下:1.確保起始點(diǎn)坐標(biāo)位于左上角2.結(jié)束點(diǎn)坐標(biāo)位于右下角3.PrivateSubConvert_Point()4.DimptempAsPoint用于交換的臨時(shí)點(diǎn)5.Ifpstart.X<pend.XThen6.Ifpstart.Y>pend.YThen7.ptemp.Y=pstart.Y8.pstart.Y=pend.Y9.pend.Y=ptemp.Y10.EndIf11.EndIf12.Ifpstart.X>p

8、end.XThen13.Ifpstart.Y<pend.YThen14.ptemp.X=pstart.X15.pstart.X=pend.X16.pend.X=ptemp.X17.EndIf18.Ifpstart.Y>pend.YThen19.ptemp=pstart20.pstart=pend21.pend=ptemp22.EndIf23. EndIf24. EndSub(5)為工具欄ItemClick事件編寫(xiě)代碼:1. PrivateSubtsPaint_ItemClicked(ByValsenderAsSystem.Object,_2. ByValeAsSystem.Wind

9、ows.Forms.ToolStripItemClickedEventArgs)HandlestsPaint.ItemClicked3. 獲取發(fā)生事件的索引號(hào)4. Me.mChoice=Me.tsPaint.Items.IndexOf(e.ClickedItem)5. IfmChoice=mSelect.IconThen6. 如果選擇的是圖標(biāo),則打開(kāi)Open選取圖標(biāo)7. DimdlgOpenAsNewOpen8. dlgOpen.Filter="圖標(biāo)文件|*.ico"9. IfdlgOpen.ShowDialog=Windows.Forms.DialogResult.OKT

10、hen10. mIcon=NewIcon(dlgOpen.)11. EndIf12. EndIf(6)為btnSetC010r控件的Click事件,編寫(xiě)代碼,選擇畫(huà)筆顏色,代碼如下:1. PrivateSubbtnSetColor_Click(ByValsenderAsSystem.Object,_2. ByValeAsSystem.EventArgs)HandlesbtnSetColor.Click3. 打開(kāi)"顏色"對(duì)話框4. DimdlgColorAsNewColorDialog5. IfdlgColor.ShowDialog=Windows.Forms.DialogR

11、esult.OKThen6. Me.btnSetColor.BackC010r=dlgColor.Color7. EndIf8. EndSub(7)編寫(xiě)選擇線條寬度的共享事件過(guò)程btnLines_Click()代碼:1. PrivateSubbtnLine_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_2. HandlesbtnLine1.Click,btnLine2.Click,btnLine3.Click,btnLine4.Click,btnLine5.Click3.4. '把所有按鈕的背景色都設(shè)為Black5

12、. Me.btnLine1.BackC010r=Color.White6. Me.btnLine2.BackC010r=Color.White7. Me.btnLine3.BackC010r=Color.White8. Me.btnLine4.BackC010r=Color.White9. Me.btnLine5.BackColor=Color.White10.11. '用戶(hù)選中的按鈕背景色為Blue12. CType(sender,Button).BackColor=Color.Black13.14. '把畫(huà)筆寬度設(shè)為用戶(hù)選擇按鈕的Tag值15. mWidth=CType(s

13、ender,Button).Tag16. EndSub(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ě)如下代碼:1. PrivateSubpicPaint_MouseDown(ByValsenderAsSystem.Object,_2. ByValeAsSystem.Windo

14、ws.Forms.MouseEventArgs)HandlespicPaint.MouseDown3. Ife.Button=Windows.Forms.MouseButtons.LeftThen4.5. 如果用戶(hù)按下的是鼠標(biāo)左鍵,則將當(dāng)前點(diǎn)坐標(biāo)賦給起始點(diǎn)6. pstart.X=e.X7. pstart.Y=e.Y8. EndIf9. EndSub11.6.2編寫(xiě)一個(gè)仿Windows畫(huà)圖程序(3)(9)為PictrueBox的MouseUp(鼠標(biāo)釋放)事件編寫(xiě)代碼:1. PrivateSubpicPaint_MouseUp(ByValsenderAsSystem.Object,_2. ByVa

15、leAsSystem.Windows.Forms.MouseEventArgs)HandlespicPaint.MouseUp3.4. Ife.Button=Windows.Forms.MouseButtons.LeftThen5. '如果用戶(hù)按下的是鼠標(biāo)左鍵,記錄終點(diǎn)坐標(biāo)6. pend.X=e.X7. pend.Y=e.Y8. '根據(jù)保存的mChoice繪制圖形9. SelectCasemChoice10.Case mSelect.Line用戶(hù)在工具欄中選擇的是鉛筆11.DimmyPenAsNewPen(Me.btnSetColor.BackColor,mWidth)12.

16、g.DrawLine(myPen,pstart,pend)'根據(jù)起點(diǎn)和終點(diǎn)繪制直線13.14. CasemSelect.Rec'用戶(hù)在工具欄中選擇的是空心矩形15. Convert_Point()轉(zhuǎn)換矩形的起點(diǎn)為其左上點(diǎn)16. DimmyPenAsNewPen(Me.btnSetColor.BackColor,mWidth)17. g.DrawRectangle(myPen,pstart.X,pstart.Y,_18. pend.X-pstart.X,pend.Y-pstart.Y)'根據(jù)起點(diǎn)和終點(diǎn)繪制空心矩形19.20. CasemSelect.FillRec'

17、;用戶(hù)在工具欄中選擇的是填充矩形21. Convert_Point()轉(zhuǎn)換矩形的起點(diǎn)為其左上點(diǎn)22. DimrecAsNewRectangle(pstart.X,pstart.Y,_23. pend.X-pstart.X,pend.Y-pstart.Y)'根據(jù)起點(diǎn)和終點(diǎn)定義矩形24. DimsbrAsNewSolidBrush(btnSetColor.BackColor)'定義畫(huà)刷顏色為用戶(hù)選擇的顏色25. g.FillRectangle(sbr,rec)'繪制填充矩形26.27. CasemSelect.StyleRec'用戶(hù)在工具欄中選擇的是風(fēng)格矩形28.

18、Convert_Point()轉(zhuǎn)換矩形的起點(diǎn)為其左上點(diǎn)29. DimrecAsNewRectangle(pstart.X,pstart.Y,_30. pend.X-pstart.X,pend.Y-pstart.Y)'根據(jù)起點(diǎn)和終點(diǎn)定義矩形31. 定義畫(huà)刷風(fēng)格為Cross型,前景色為白色,背景色為用戶(hù)選擇32.DimhbrAsNewHatchBrush(HatchStyle.Cross,6.37.38.Color.White, btnSetColor.BackColor)g.FillRectangle(hbr, rec)Case mSelect.EllipseConv

19、ert_Point()Dim pen1 As用畫(huà)刷填充矩形用戶(hù)在工具欄中選擇的是空心橢圓轉(zhuǎn)換橢圓外接矩形的起點(diǎn)為其左上點(diǎn)New Pen(btnSetColor.BackColor, mWidth)g.DrawEllipse(pen1, pstart.X, pstart.Y, _39. pend.X-pstart.X,pend.Y-pstart.Y)根據(jù)橢圓外接矩形的起點(diǎn)和終點(diǎn)繪制橢圓40.41. CasemSelect.FillEllipse'用戶(hù)在工具欄中選擇的是填充橢圓42. Convert_Point()'轉(zhuǎn)換橢圓外接矩形的起點(diǎn)為其左上點(diǎn)43. DimrecAsNewRe

20、ctangle(pstart.X,pstart.Y,_44. pend.X-pstart.X,pend.Y-pstart.Y)'定義橢圓的外接矩形45. DimsbrAsNewSolidBrush(btnSetColor.BackColor)'定義畫(huà)刷顏色為用戶(hù)選擇的顏色46. g.FillEllipse(sbr,rec)'用畫(huà)刷填充矩形47.48. CasemSelect.StyleEllipse'用戶(hù)在工具欄中選擇的是風(fēng)格橢圓49. Convert_Point()'轉(zhuǎn)換橢圓外接矩形的起點(diǎn)為其左上點(diǎn)50. DimrecAsNewRectangle(ps

21、tart.X,pstart.Y,_51. pend.X-pstart.X,pend.Y-pstart.Y)'定義橢圓的外接矩形52. 定義畫(huà)刷風(fēng)格為Cross型,前景色為白色,背景色為用戶(hù)選擇53. DimhbrAsNewHatchBrush(HatchStyle.Cross,Color.White,btnSetColor.BackColor)54. g.FillEllipse(hbr,rec)'用畫(huà)刷填充矩形55. EndSelect56. EndIf57. EndSub(10)為PictrueBox的MouseMove(鼠標(biāo)移動(dòng))事件編寫(xiě)代碼:1. PrivateSubpi

22、cPaint_MouseMove(ByValsenderAsSystem.Object2. ByValeAsSystem.Windows.Forms.MouseEventArgs)HandlespicPaint.MouseMove3. Ife.Button=Windows.Forms.MouseButtons.LeftThen4. '如果用戶(hù)按下的是鼠標(biāo)左鍵,根據(jù)保存的mChoice繪制圖形5. SelectCasemChoice6. CasemSelect.Pencil'用戶(hù)在工具欄中選擇的是鉛筆7. Dimpen1AsNewPen(btnSetColor.BackColor,mWidth)8. pend.X=e.X9. pend.Y=e.Y10. g.DrawLine(pen1,pstart,pend)11. pstart=pend'將已經(jīng)繪制的終點(diǎn)作為下一次的繪制的起點(diǎn)12.Case mSelect.Eraser用戶(hù)在工具欄中選擇的是橡皮13. DimmyPenAsNewPen(Color.White,mWidth)定義白色畫(huà)筆作為擦除效果14. pend.X=e.X15. pend.Y=e.Y16. g.DrawLine(myPen,psta

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論