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

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上 面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計報告設(shè)計題目: 簡單畫圖程序的設(shè)計 學(xué) 院: 信息工程學(xué)院 專 業(yè): 計算機(jī)科學(xué)與技術(shù)(交通) 學(xué) 號: 姓 名: 指導(dǎo)教師: 2015 年 1 月 4 日目錄1.設(shè)計目的和內(nèi)容11.1.設(shè)計目的11.2.設(shè)計內(nèi)容12.基本功能12.1.圖形樣式12.2.顏色樣式22.3.畫筆樣式22.4.線型選擇33.設(shè)計思路34.軟件設(shè)計54.1.設(shè)計步驟54.2.界面設(shè)計84.3.關(guān)鍵功能的實(shí)現(xiàn)95.心得體會116.參考文獻(xiàn)117.附錄117.1.調(diào)試報告117.2.調(diào)試結(jié)果127.3.關(guān)鍵源代碼12專心-專注-專業(yè)1. 設(shè)計目的和內(nèi)容1.1. 設(shè)計目

2、的1、 學(xué)習(xí)Visual C+的MFC開發(fā)程序的步驟2、 綜合運(yùn)用所學(xué)的類、繼承和多態(tài)的知識3、 進(jìn)一步掌握程序調(diào)試的方法1.2. 設(shè)計內(nèi)容1、 利用MFC的向?qū)?,?chuàng)建基于單文檔的應(yīng)用程序2、 編程實(shí)現(xiàn),繪制線、圓、矩形的功能3、 能夠設(shè)定當(dāng)前要畫的圖形樣式(最少為以上3種)和圖形顏色(最少能夠設(shè)為以下4種顏色:黑、紅、綠、藍(lán))4、 當(dāng)窗口重繪后,還能保持原來的圖形5、 選做1:能夠選中某些已繪制的圖形,并刪除之6、 選做2:能夠保存已繪制的圖形,下次打開時恢復(fù)原狀2. 基本功能2.1.圖形樣式在菜單欄的設(shè)置里面有圖形樣式的選擇,可以點(diǎn)擊選中也可以在工具欄里點(diǎn)擊圖形的圖標(biāo),能夠?qū)崿F(xiàn)繪制點(diǎn)、直線

3、、矩形和橢圓的功能。第 1 頁2.2.顏色樣式在菜單欄的設(shè)置里面有顏色樣式的選擇,可以點(diǎn)擊選中也可以在工具欄里點(diǎn)擊顏色的圖標(biāo),除了能夠?qū)崿F(xiàn)紅、綠、藍(lán)、黃、黑的普通選擇,同時還加入了一個顏色板,點(diǎn)擊更多()可以在調(diào)色板上選擇任意的顏色。菜單和工具欄選色:調(diào)色板選色:2.3.畫筆樣式在菜單欄的設(shè)置里面有畫筆樣式的選擇,可以點(diǎn)擊選中即改變畫筆的線寬,也可以在工具欄里點(diǎn)擊表示畫筆寬度的快捷按鈕,線寬有從標(biāo)準(zhǔn)、一般、略粗和更粗的選擇。第 2 頁2.4.線型樣式在菜單欄的設(shè)置里面有關(guān)于線型的選擇,可以點(diǎn)擊菜單欄的選項(xiàng)也可以在工具欄里找到表示線型的三個按鈕,點(diǎn)擊即可修改所選的線型。3. 設(shè)計思路1、 根據(jù)需

4、要用到的變量設(shè)定變量并進(jìn)行初始化2、 選擇相應(yīng)的圖形、顏色、畫筆、線型之后就響應(yīng)相應(yīng)的消息,給需要的變量賦上相應(yīng)類型的值3、 鼠標(biāo)按下響應(yīng)函數(shù)OnLBottonDown(),捕捉當(dāng)前位置得到坐標(biāo)起點(diǎn),鼠標(biāo)彈起響應(yīng)函數(shù)OnLBottonUp()得到另一個坐標(biāo)則可以進(jìn)行圖形繪制第 3 頁4、 選擇其他屬性即可進(jìn)行繪制不同顏色、線寬、線型的圖形5、 流程圖如下:開始 默認(rèn)(黑色)改變畫筆屬性選擇顏色 默認(rèn)(空) 改變圖形屬性 選擇圖形初始化m_color顏色,m_type圖形類型,m_lstyle線型,m_pwidth畫筆寬度,m_point起點(diǎn),point終點(diǎn)。選擇筆寬結(jié)束結(jié)束結(jié)束第 4 頁 默認(rèn)

5、(1)改變畫筆屬性選擇線型結(jié)束彈起鼠標(biāo)響應(yīng)OnLButtonUp()函數(shù),鼠標(biāo)置于終點(diǎn),得到圖形。按下鼠標(biāo)響應(yīng)OnLButtonDown()函數(shù),得到坐標(biāo)起點(diǎn),開始繪圖。 默認(rèn)(實(shí)線)改變畫筆屬性4. 軟件設(shè)計4.1. 設(shè)計步驟1、 創(chuàng)建一個MFC AppWizard工程命名為”ZYFdraw”,建立一個單文檔,系統(tǒng)會自動生第 5 頁成相應(yīng)的類。第 6 頁2、 編輯菜單,在菜單里面增加對應(yīng)的菜單項(xiàng)并設(shè)定對應(yīng)的ID,需要改變屬性只要點(diǎn)擊菜單項(xiàng)就可以。3、 在相應(yīng)的消息函數(shù)添加代碼,實(shí)現(xiàn)功能第 7 頁4.2.界面設(shè)計在菜單里面增加繪圖按鈕,包括“圖形樣式”、“顏色樣式”、“畫筆樣式”和“線型樣式”

6、四個子按鈕;在工具欄里面添加相應(yīng)的快捷按鈕,更方便于繪圖時候的操作。添加菜單欄的項(xiàng)目:菜單項(xiàng)ID菜單項(xiàng)名稱菜單項(xiàng)命令響應(yīng)函數(shù)IDM_DDOT點(diǎn)OnDdotIDM_DLINE直線OnDlineIDM_DRECTANGLE矩形OnDrectangleIDM_DELLIPSE橢圓OnDellipseIDM_CRED紅色OnCredIDM_CGREEN綠色OnCgreenIDM_CBLUE藍(lán)色OnCblueIDM_CYELLOW黃色OnCyellowIDM_CMORE更多()OnCmoreIDM_CPSLIM標(biāo)準(zhǔn)OnCpslimIDM_CPMIDDLE一般OnCpmiddleIDM_CPBIG略粗On

7、CpbigIDM_CPMORE更粗OnCpmoreIDM_LSTYLE實(shí)線OnLstyleIDM_LSTYLEDASH虛線OnLstyledashIDM_LSTYLEDOT點(diǎn)線OnLstyledot第 8 頁添加工具欄的項(xiàng)目:菜單項(xiàng)ID菜單項(xiàng)名稱菜單項(xiàng)命令響應(yīng)函數(shù)IDM_SDOT點(diǎn)OnSdotIDM_SLINE直線OnSlineIDM_SRECTANGLE矩形OnSrectangleIDM_SELLIPSE橢圓OnSellipseIDM_SRED紅色OnSredIDM_SGREEN綠色OnSgreenIDM_SBLUE藍(lán)色OnSblueIDM_SYELLOW黃色OnSyellowIDM_SPS

8、LIM標(biāo)準(zhǔn)OnSpslimIDM_SPMIDDLE一般OnSpmiddleIDM_SPBIG略粗OnSpbigIDM_SPMORE更粗OnSpmoreIDM_SLSOLID實(shí)線OnSlsolidIDM_SLDASH虛線OnSldashIDM_SLDOT點(diǎn)線OnSldot界面如下:4.3.關(guān)鍵功能的實(shí)現(xiàn)當(dāng)鼠標(biāo)點(diǎn)擊菜單欄或者工具欄響應(yīng)的圖形和屬性按鈕時,即可改變所要畫的圖形以及畫筆的屬性。4.3.1.繪圖:左鍵點(diǎn)擊工具欄的四個繪圖按鈕的任意一個可以選擇自己需要的圖形(點(diǎn)、直線、矩形、橢圓),如下圖所示:第 9 頁4.3.2.顏色:左鍵點(diǎn)擊工具欄的四個顏色按鈕可以選擇顏色(紅色、綠色、藍(lán)色、黃色)還

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

10、次的課設(shè)中由于要繪制圖形,所以比較關(guān)鍵的是坐標(biāo)(m_point,point)兩個起點(diǎn)和終點(diǎn)的。因此,我設(shè)立了消息響應(yīng)函數(shù)OnLButtonDown()以及OnLButtonUp()還獲取鼠標(biāo)的當(dāng)前坐標(biāo)和終點(diǎn)坐標(biāo)。繪制圖形也是在OnLButtonUp()的函數(shù)里面實(shí)現(xiàn)的。為了實(shí)現(xiàn)圖形的重繪,定義了一個Cdraw的類,在里面重新定義了變量用于保存已繪的圖形,其中還是使用了MFC系統(tǒng)自帶的一個CPtrArray動態(tài)數(shù)組。在OnLButtonUp()里面繪制圖形,通過自定義的類Cdraw與動態(tài)數(shù)組CPtrArray在OnDraw()里面實(shí)現(xiàn)重繪,這樣使得整個程序的結(jié)構(gòu)較為清楚和簡便。通過這次的課設(shè)讓我

11、明白了即使一個小小的繪圖程序都是如此復(fù)雜,更何況是電腦里面的成千上萬的程序呢,自己知道的東西還是太少了,以后要加強(qiáng)學(xué)習(xí)。6. 參考文獻(xiàn)【1】 孫鑫 VC+深入詳解(修訂版) 電子工業(yè)出版社 2012年【2】 梁普選 Visual C+程序設(shè)計與實(shí)踐 清華大學(xué)出版 2005年【3】 嚴(yán)華峰 VISUAL C+課程設(shè)計案例精編(第二版)中國水利水電出版社 2004年【4】 魏亮、李春葆等 Visual C+程序設(shè)計例學(xué)與實(shí)踐 清華大學(xué)出版社 2006年 7. 附錄7.1. 調(diào)試報告開始時沒有創(chuàng)建Cdraw類來保存已經(jīng)繪制的圖形,所以每次在繪好圖形以后拉動窗口,圖形被刷新就消失了。在創(chuàng)建了Cdraw

12、類后我們通過系統(tǒng)自帶的動態(tài)數(shù)組保存已繪的圖形,在在OnDraw()里面調(diào)用以保存的圖形,則在拖動窗口時圖形不消失。第 11 頁7.2. 調(diào)試結(jié)果1、 編譯運(yùn)行后的窗口如下:2、 改變繪圖的畫筆粗細(xì),顏色、形狀得到的窗口如下: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、其中各個成員變量的代碼實(shí)現(xiàn)如下:void CZYFdrawView:OnDdot

13、() /點(diǎn)/ TODO: Add your command handler code herem_type=1;void CZYFdrawView: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 her

14、em_type=4;/顏色void CZYFdrawView:OnCred() /紅色/ TODO: Add your command 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() /藍(lán)色/ TODO: Add your command handler code herem_color=RGB(0,0,255)

15、;void CZYFdrawView:OnCyellow() /黃色/ TODO: Add your command handler 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.

16、m_cc.rgbResult;/筆寬void CZYFdrawView:OnCpslim() /標(biāo)準(zhǔn)/ TODO: Add your 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:OnC

17、pmore() /更粗/ TODO: Add your command handler code herem_pwidth=10;/線型void CZYFdrawView:OnLstyle() /實(shí)線/ TODO: Add your command handler code herem_lstyle=0;void CZYFdrawView:OnLstyledash() /虛線/ TODO: Add your command handler code herem_lstyle=1;void CZYFdrawView:OnLstyledot() /點(diǎn)線/ TODO: Add your comman

18、d handler code herem_lstyle=2;3、在OnLButtonDown()中實(shí)現(xiàn)記錄起點(diǎn):void CZYFdrawView: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()中實(shí)現(xiàn)繪畫圖形功能的代碼如下:void CZYFdrawView:OnLButtonUp(UINT nF

19、lags, CPoint point) / TODO: Add your message handler code here and/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(poin

20、t,m_color);break;case 2:dc.MoveTo(m_point);dc.LineTo(point);break;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);CV

21、iew:OnLButtonUp(nFlags, point);5、在OnDraw()中實(shí)現(xiàn)圖形重繪之前要自己重新定義一個新的類”Cdraw”,并在類中保存需要保存的變量代碼如下:第 16 頁Cdraw類變量全部設(shè)為共有類型的:class Cdraw public:int m_lstyle;int m_pwidth;UINT m_type;COLORREF m_color;CPoint m_point;CPoint m_ptEnd;Cdraw();Cdraw(UINT m_type,COLORREF m_color,int m_pwidth,int m_lstyle,CPoint m_point

22、,CPoint m_ptend);virtual Cdraw();private:;Cdraw:Cdraw(UINT m_type,COLORREF m_color,int m_pwidth,int m_lstyle,CPoint m_point,CPoint m_ptEnd)this-m_type=m_type;this-m_color=m_color;this-m_pwidth=m_pwidth;this-m_lstyle=m_lstyle;this-m_point=m_point;this-m_ptEnd=m_ptEnd;6、實(shí)現(xiàn)圖形重繪:void CZYFdrawView:OnDraw(CDC* pDC)CZYFdrawDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論