簡單畫圖程序設(shè)計_第1頁
簡單畫圖程序設(shè)計_第2頁
簡單畫圖程序設(shè)計_第3頁
簡單畫圖程序設(shè)計_第4頁
簡單畫圖程序設(shè)計_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上 面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計報告設(shè)計題目: 簡單畫圖程序的設(shè)計 學(xué) 院: 信息工程學(xué)院 專 業(yè): 計算機科學(xué)與技術(shù)(交通) 學(xué) 號: 姓 名: 指導(dǎo)教師: 2015 年 1 月 4 日目錄1.設(shè)計目的和內(nèi)容­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

2、;­­­­­­­­­­­­­­­­­11.1.設(shè)計目的­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­&#

3、173;­­­­­­­­­­­­­­­­­­­­­­­­­­­11.2.設(shè)計內(nèi)容­­­­­­­­­­­­­­­­­­­­­

4、;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­12.基本功能­­­­­­­­­­

5、3;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­12.1.圖形樣式­­&

6、#173;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­&

7、#173;­­­­­­12.2.顏色樣式­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

8、3;­­­­­­­­­­­­­­­­­22.3.畫筆樣式­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­&

9、#173;­­­­­­­­­­­­­­­­­­­­­­­­­­­22.4.線型選擇­­­­­­­­­­­­­­­­­­­­

10、3;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­33.設(shè)計思路­­­­­­­­­­

11、73;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­34.軟件設(shè)計­­&#

12、173;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­&#

13、173;­­­­54.1.設(shè)計步驟­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

14、;­­­­­­­­­­­­­­­54.2.界面設(shè)計­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­&#

15、173;­­­­­­­­­­­­­­­­­­­­­­­­­84.3.關(guān)鍵功能的實現(xiàn)­­­­­­­­­­­­­­­­­­­­­­&#

16、173;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­95.心得體會­­­­­­­­­­­­­­­­­­­&

17、#173;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­116.參考文獻­­­­­­­­­­­­

18、;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­117.附錄­­­­­

19、;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

20、;­­­­­­­117.1.調(diào)試報告­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­&

21、#173;­­­­­­­­­­­­­­­­117.2.調(diào)試結(jié)果­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

22、73;­­­­­­­­­­­­­­­­­­­­­­­­­­127.3.關(guān)鍵源代碼­­­­­­­­­­­­­­­­­­­­­

23、3;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­12專心-專注-專業(yè)1. 設(shè)計目的和內(nèi)容1.1. 設(shè)計目的1、 學(xué)習(xí)Visual C+的MFC開發(fā)程序的步驟2、 綜合運用所學(xué)的類、繼承和多態(tài)的知識3、 進一步掌握程序調(diào)試的方法1.2.

24、設(shè)計內(nèi)容1、 利用MFC的向?qū)В瑒?chuàng)建基于單文檔的應(yīng)用程序2、 編程實現(xiàn),繪制線、圓、矩形的功能3、 能夠設(shè)定當(dāng)前要畫的圖形樣式(最少為以上3種)和圖形顏色(最少能夠設(shè)為以下4種顏色:黑、紅、綠、藍)4、 當(dāng)窗口重繪后,還能保持原來的圖形5、 選做1:能夠選中某些已繪制的圖形,并刪除之6、 選做2:能夠保存已繪制的圖形,下次打開時恢復(fù)原狀2. 基本功能2.1.圖形樣式在菜單欄的設(shè)置里面有圖形樣式的選擇,可以點擊選中也可以在工具欄里點擊圖形的圖標(biāo),能夠?qū)崿F(xiàn)繪制點、直線、矩形和橢圓的功能。第 1 頁2.2.顏色樣式在菜單欄的設(shè)置里面有顏色樣式的選擇,可以點擊選中也可以在工具欄里點擊顏色的圖標(biāo),除了能

25、夠?qū)崿F(xiàn)紅、綠、藍、黃、黑的普通選擇,同時還加入了一個顏色板,點擊更多()可以在調(diào)色板上選擇任意的顏色。菜單和工具欄選色:調(diào)色板選色:2.3.畫筆樣式在菜單欄的設(shè)置里面有畫筆樣式的選擇,可以點擊選中即改變畫筆的線寬,也可以在工具欄里點擊表示畫筆寬度的快捷按鈕,線寬有從標(biāo)準(zhǔn)、一般、略粗和更粗的選擇。第 2 頁2.4.線型樣式在菜單欄的設(shè)置里面有關(guān)于線型的選擇,可以點擊菜單欄的選項也可以在工具欄里找到表示線型的三個按鈕,點擊即可修改所選的線型。3. 設(shè)計思路1、 根據(jù)需要用到的變量設(shè)定變量并進行初始化2、 選擇相應(yīng)的圖形、顏色、畫筆、線型之后就響應(yīng)相應(yīng)的消息,給需要的變量賦上相應(yīng)類型的值3、 鼠標(biāo)按

26、下響應(yīng)函數(shù)OnLBottonDown(),捕捉當(dāng)前位置得到坐標(biāo)起點,鼠標(biāo)彈起響應(yīng)函數(shù)OnLBottonUp()得到另一個坐標(biāo)則可以進行圖形繪制第 3 頁4、 選擇其他屬性即可進行繪制不同顏色、線寬、線型的圖形5、 流程圖如下:開始 默認(黑色)改變畫筆屬性選擇顏色 默認(空) 改變圖形屬性 選擇圖形初始化m_color顏色,m_type圖形類型,m_lstyle線型,m_pwidth畫筆寬度,m_point起點,point終點。選擇筆寬結(jié)束結(jié)束結(jié)束第 4 頁 默認(1)改變畫筆屬性選擇線型結(jié)束彈起鼠標(biāo)響應(yīng)OnLButtonUp()函數(shù),鼠標(biāo)置于終點,得到圖形。按下鼠標(biāo)響應(yīng)OnLButtonDo

27、wn()函數(shù),得到坐標(biāo)起點,開始繪圖。 默認(實線)改變畫筆屬性4. 軟件設(shè)計4.1. 設(shè)計步驟1、 創(chuàng)建一個MFC AppWizard工程命名為”ZYFdraw”,建立一個單文檔,系統(tǒng)會自動生第 5 頁成相應(yīng)的類。第 6 頁2、 編輯菜單,在菜單里面增加對應(yīng)的菜單項并設(shè)定對應(yīng)的ID,需要改變屬性只要點擊菜單項就可以。3、 在相應(yīng)的消息函數(shù)添加代碼,實現(xiàn)功能第 7 頁4.2.界面設(shè)計在菜單里面增加繪圖按鈕,包括“圖形樣式”、“顏色樣式”、“畫筆樣式”和“線型樣式”四個子按鈕;在工具欄里面添加相應(yīng)的快捷按鈕,更方便于繪圖時候的操作。添加菜單欄的項目:菜單項ID菜單項名稱菜單項命令響應(yīng)函數(shù)IDM_

28、DDOT點OnDdotIDM_DLINE直線OnDlineIDM_DRECTANGLE矩形OnDrectangleIDM_DELLIPSE橢圓OnDellipseIDM_CRED紅色OnCredIDM_CGREEN綠色OnCgreenIDM_CBLUE藍色OnCblueIDM_CYELLOW黃色OnCyellowIDM_CMORE更多()OnCmoreIDM_CPSLIM標(biāo)準(zhǔn)OnCpslimIDM_CPMIDDLE一般OnCpmiddleIDM_CPBIG略粗OnCpbigIDM_CPMORE更粗OnCpmoreIDM_LSTYLE實線OnLstyleIDM_LSTYLEDASH虛線OnLst

29、yledashIDM_LSTYLEDOT點線OnLstyledot第 8 頁添加工具欄的項目:菜單項ID菜單項名稱菜單項命令響應(yīng)函數(shù)IDM_SDOT點OnSdotIDM_SLINE直線OnSlineIDM_SRECTANGLE矩形OnSrectangleIDM_SELLIPSE橢圓OnSellipseIDM_SRED紅色OnSredIDM_SGREEN綠色OnSgreenIDM_SBLUE藍色OnSblueIDM_SYELLOW黃色OnSyellowIDM_SPSLIM標(biāo)準(zhǔn)OnSpslimIDM_SPMIDDLE一般OnSpmiddleIDM_SPBIG略粗OnSpbigIDM_SPMORE更

30、粗OnSpmoreIDM_SLSOLID實線OnSlsolidIDM_SLDASH虛線OnSldashIDM_SLDOT點線OnSldot界面如下:4.3.關(guān)鍵功能的實現(xiàn)當(dāng)鼠標(biāo)點擊菜單欄或者工具欄響應(yīng)的圖形和屬性按鈕時,即可改變所要畫的圖形以及畫筆的屬性。4.3.1.繪圖:左鍵點擊工具欄的四個繪圖按鈕的任意一個可以選擇自己需要的圖形(點、直線、矩形、橢圓),如下圖所示:第 9 頁4.3.2.顏色:左鍵點擊工具欄的四個顏色按鈕可以選擇顏色(紅色、綠色、藍色、黃色)還可以在菜單欄的繪圖的顏色樣式里面點擊更多出現(xiàn)調(diào)色板選擇更多的顏色,如下圖所示: 4.3.3.筆寬:左鍵點擊菜單欄的畫筆樣式或工具欄以

31、下四個按鈕即可改變畫筆的寬度,如下圖所示:第 10 頁4.3.4.線型:左鍵點擊菜單欄的線型樣式或在工具欄點擊以下三個按鈕可以選擇實線、虛線和點線的線型,如下圖所示: 5. 心得體會這次課程設(shè)計我成功的完成了。通過本次的課程設(shè)計,我學(xué)會了運用鼠標(biāo)點擊完成繪制點、直線、矩形和橢圓的繪圖功能。編寫一個簡單的繪圖程序,完成了繪圖時圖形、顏色、畫筆寬度以及線型的選擇?;谶@次的課設(shè),對菜單界面的建立,消息響應(yīng)函數(shù)處理,創(chuàng)建句柄都比較熟悉了,但是難的地方在于代碼的編寫。在這次的課設(shè)中由于要繪制圖形,所以比較關(guān)鍵的是坐標(biāo)(m_point,point)兩個起點和終點的。因此,我設(shè)立了消息響應(yīng)函數(shù)OnLBut

32、tonDown()以及OnLButtonUp()還獲取鼠標(biāo)的當(dāng)前坐標(biāo)和終點坐標(biāo)。繪制圖形也是在OnLButtonUp()的函數(shù)里面實現(xiàn)的。為了實現(xiàn)圖形的重繪,定義了一個Cdraw的類,在里面重新定義了變量用于保存已繪的圖形,其中還是使用了MFC系統(tǒng)自帶的一個CPtrArray動態(tài)數(shù)組。在OnLButtonUp()里面繪制圖形,通過自定義的類Cdraw與動態(tài)數(shù)組CPtrArray在OnDraw()里面實現(xiàn)重繪,這樣使得整個程序的結(jié)構(gòu)較為清楚和簡便。通過這次的課設(shè)讓我明白了即使一個小小的繪圖程序都是如此復(fù)雜,更何況是電腦里面的成千上萬的程序呢,自己知道的東西還是太少了,以后要加強學(xué)習(xí)。6. 參考文

33、獻【1】 孫鑫 VC+深入詳解(修訂版) 電子工業(yè)出版社 2012年【2】 梁普選 Visual C+程序設(shè)計與實踐 清華大學(xué)出版 2005年【3】 嚴華峰 VISUAL C+課程設(shè)計案例精編(第二版)中國水利水電出版社 2004年【4】 魏亮、李春葆等 Visual C+程序設(shè)計例學(xué)與實踐 清華大學(xué)出版社 2006年 7. 附錄7.1. 調(diào)試報告開始時沒有創(chuàng)建Cdraw類來保存已經(jīng)繪制的圖形,所以每次在繪好圖形以后拉動窗口,圖形被刷新就消失了。在創(chuàng)建了Cdraw類后我們通過系統(tǒng)自帶的動態(tài)數(shù)組保存已繪的圖形,在在OnDraw()里面調(diào)用以保存的圖形,則在拖動窗口時圖形不消失。第 11 頁7.2

34、. 調(diào)試結(jié)果1、 編譯運行后的窗口如下:2、 改變繪圖的畫筆粗細,顏色、形狀得到的窗口如下:7.3. 關(guān)鍵源代碼1、在CZYFdrawVIEW類的頭文件中加入私有成員變量:private:int m_lstyle;int m_pwidth;CPtrArray m_cptArray;第 12 頁 COLORREF m_color;CPoint m_point;UINT m_type;2、其中各個成員變量的代碼實現(xiàn)如下:void CZYFdrawView:OnDdot() /點/ TODO: Add your command handler code herem_type=1;void CZYFd

35、rawView:OnDline() /直線/ TODO: Add your command handler code herem_type=2;void CZYFdrawView:OnDrectangle() /矩形/ TODO: Add your command handler code herem_type=3;void CZYFdrawView:OnDellipse() /橢圓/ TODO: Add your command handler code herem_type=4;/顏色void CZYFdrawView:OnCred() /紅色/ TODO: Add your comman

36、d handler code herem_color=RGB(255,0,0);第 13 頁void CZYFdrawView:OnCgreen() /綠色/ TODO: Add your command handler code herem_color=RGB(0,255,0);void CZYFdrawView:OnCblue() /藍色/ TODO: Add your command handler code herem_color=RGB(0,0,255);void CZYFdrawView:OnCyellow() /黃色/ TODO: Add your command handler

37、 code herem_color=RGB(255,255,0);void CZYFdrawView:OnCmore() /更多/ TODO: Add your command handler code hereCColorDialog dlg;dlg.m_cc.Flags|=CC_RGBINIT|CC_FULLOPEN;/ 彈出對話框dlg.m_cc.rgbResult=m_color;/記錄顏色if(IDOK=dlg.DoModal()m_color=dlg.m_cc.rgbResult;/筆寬void CZYFdrawView:OnCpslim() /標(biāo)準(zhǔn)/ TODO: Add your

38、 command handler code herem_pwidth=2;void CZYFdrawView:OnCpmiddle() /中等第 14 頁/ TODO: Add your command handler code herem_pwidth=4;void CZYFdrawView:OnCpbig() /粗/ TODO: Add your command handler code herem_pwidth=8;void CZYFdrawView:OnCpmore() /更粗/ TODO: Add your command handler code herem_pwidth=10;/

39、線型void CZYFdrawView:OnLstyle() /實線/ TODO: Add your command handler code herem_lstyle=0;void CZYFdrawView:OnLstyledash() /虛線/ TODO: Add your command handler code herem_lstyle=1;void CZYFdrawView:OnLstyledot() /點線/ TODO: Add your command handler code herem_lstyle=2;3、在OnLButtonDown()中實現(xiàn)記錄起點:void CZYFd

40、rawView:OnLButtonDown(UINT nFlags, CPoint point) 第 15 頁/ TODO: Add your message handler code here and/or call defaultm_point=point;CView:OnLButtonDown(nFlags, point);4、在OnLButtonUp()中實現(xiàn)繪畫圖形功能的代碼如下:void CZYFdrawView:OnLButtonUp(UINT nFlags, CPoint point) / TODO: Add your message handler code here and

41、/or call defaultCClientDC dc(this);CPen pen(m_lstyle,m_pwidth,m_color);dc.SelectObject(&pen);/空白畫刷 使圖形不覆蓋CBrush* pBrush=CBrush:FromHandle(HBRUSH)GetStockObject(NULL_BRUSH); dc.SelectObject(pBrush);switch(m_type)case 1:dc.SetPixel(point,m_color);break;case 2:dc.MoveTo(m_point);dc.LineTo(point);br

42、eak;case 3:dc.Rectangle(CRect(m_point,point);break;case 4:dc.Ellipse(CRect(m_point,point);break;dc.SelectObject(pBrush);dc.SelectObject(&pen); Cdraw *pdraw=new Cdraw(m_type,m_color,m_pwidth,m_lstyle,m_point,point);m_cptArray.Add(pdraw);CView:OnLButtonUp(nFlags, point);5、在OnDraw()中實現(xiàn)圖形重繪之前要自己重新定義一個新的類”Cdraw”,并在類中保存需要保存的變量代碼如下:第 16 頁Cdraw類變量全部設(shè)為共有類型的:class Cdraw public:int m_lstyle;int m_pwidth;UINT m_type;COLORREF m_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論