




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目: 簡(jiǎn)單畫(huà)圖程序的設(shè)計(jì) 學(xué) 院: 信息工程學(xué)院 專(zhuān) 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)(交通) 學(xué) 號(hào): 姓 名: 指導(dǎo)教師: 2015 年 1 月 4 日目錄1.設(shè)計(jì)目的和內(nèi)容
2、;11.1.設(shè)計(jì)目的
3、173;11.2.設(shè)計(jì)內(nèi)容
4、;12.基本功能
5、3;12.1.圖形樣式&
6、#173;&
7、#173;12.2.顏色樣式
8、3;22.3.畫(huà)筆樣式&
9、#173;22.4.線型選擇
10、3;33.設(shè)計(jì)思路
11、73;34.軟件設(shè)計(jì)
12、173;
13、173;54.1.設(shè)計(jì)步驟
14、;54.2.界面設(shè)計(jì)
15、173;84.3.關(guān)鍵功能的實(shí)現(xiàn)
16、173;95.心得體會(huì)&
17、#173;116.參考文獻(xiàn)
18、;117.附錄
19、;
20、;117.1.調(diào)試報(bào)告&
21、#173;117.2.調(diào)試結(jié)果
22、73;127.3.關(guān)鍵源代碼
23、3;12專(zhuān)心-專(zhuān)注-專(zhuān)業(yè)1. 設(shè)計(jì)目的和內(nèi)容1.1. 設(shè)計(jì)目的1、 學(xué)習(xí)Visual C+的MFC開(kāi)發(fā)程序的步驟2、 綜合運(yùn)用所學(xué)的類(lèi)、繼承和多態(tài)的知識(shí)3、 進(jìn)一步掌握程序調(diào)試的方法1.2.
24、設(shè)計(jì)內(nèi)容1、 利用MFC的向?qū)В瑒?chuàng)建基于單文檔的應(yīng)用程序2、 編程實(shí)現(xiàn),繪制線、圓、矩形的功能3、 能夠設(shè)定當(dāng)前要畫(huà)的圖形樣式(最少為以上3種)和圖形顏色(最少能夠設(shè)為以下4種顏色:黑、紅、綠、藍(lán))4、 當(dāng)窗口重繪后,還能保持原來(lái)的圖形5、 選做1:能夠選中某些已繪制的圖形,并刪除之6、 選做2:能夠保存已繪制的圖形,下次打開(kāi)時(shí)恢復(fù)原狀2. 基本功能2.1.圖形樣式在菜單欄的設(shè)置里面有圖形樣式的選擇,可以點(diǎn)擊選中也可以在工具欄里點(diǎn)擊圖形的圖標(biāo),能夠?qū)崿F(xiàn)繪制點(diǎn)、直線、矩形和橢圓的功能。第 1 頁(yè)2.2.顏色樣式在菜單欄的設(shè)置里面有顏色樣式的選擇,可以點(diǎn)擊選中也可以在工具欄里點(diǎn)擊顏色的圖標(biāo),除了能
25、夠?qū)崿F(xiàn)紅、綠、藍(lán)、黃、黑的普通選擇,同時(shí)還加入了一個(gè)顏色板,點(diǎn)擊更多()可以在調(diào)色板上選擇任意的顏色。菜單和工具欄選色:調(diào)色板選色:2.3.畫(huà)筆樣式在菜單欄的設(shè)置里面有畫(huà)筆樣式的選擇,可以點(diǎn)擊選中即改變畫(huà)筆的線寬,也可以在工具欄里點(diǎn)擊表示畫(huà)筆寬度的快捷按鈕,線寬有從標(biāo)準(zhǔn)、一般、略粗和更粗的選擇。第 2 頁(yè)2.4.線型樣式在菜單欄的設(shè)置里面有關(guān)于線型的選擇,可以點(diǎn)擊菜單欄的選項(xiàng)也可以在工具欄里找到表示線型的三個(gè)按鈕,點(diǎn)擊即可修改所選的線型。3. 設(shè)計(jì)思路1、 根據(jù)需要用到的變量設(shè)定變量并進(jìn)行初始化2、 選擇相應(yīng)的圖形、顏色、畫(huà)筆、線型之后就響應(yīng)相應(yīng)的消息,給需要的變量賦上相應(yīng)類(lèi)型的值3、 鼠標(biāo)按
26、下響應(yīng)函數(shù)OnLBottonDown(),捕捉當(dāng)前位置得到坐標(biāo)起點(diǎn),鼠標(biāo)彈起響應(yīng)函數(shù)OnLBottonUp()得到另一個(gè)坐標(biāo)則可以進(jìn)行圖形繪制第 3 頁(yè)4、 選擇其他屬性即可進(jìn)行繪制不同顏色、線寬、線型的圖形5、 流程圖如下:開(kāi)始 默認(rèn)(黑色)改變畫(huà)筆屬性選擇顏色 默認(rèn)(空) 改變圖形屬性 選擇圖形初始化m_color顏色,m_type圖形類(lèi)型,m_lstyle線型,m_pwidth畫(huà)筆寬度,m_point起點(diǎn),point終點(diǎn)。選擇筆寬結(jié)束結(jié)束結(jié)束第 4 頁(yè) 默認(rèn)(1)改變畫(huà)筆屬性選擇線型結(jié)束彈起鼠標(biāo)響應(yīng)OnLButtonUp()函數(shù),鼠標(biāo)置于終點(diǎn),得到圖形。按下鼠標(biāo)響應(yīng)OnLButtonDo
27、wn()函數(shù),得到坐標(biāo)起點(diǎn),開(kāi)始繪圖。 默認(rèn)(實(shí)線)改變畫(huà)筆屬性4. 軟件設(shè)計(jì)4.1. 設(shè)計(jì)步驟1、 創(chuàng)建一個(gè)MFC AppWizard工程命名為”ZYFdraw”,建立一個(gè)單文檔,系統(tǒng)會(huì)自動(dòng)生第 5 頁(yè)成相應(yīng)的類(lèi)。第 6 頁(yè)2、 編輯菜單,在菜單里面增加對(duì)應(yīng)的菜單項(xiàng)并設(shè)定對(duì)應(yīng)的ID,需要改變屬性只要點(diǎn)擊菜單項(xiàng)就可以。3、 在相應(yīng)的消息函數(shù)添加代碼,實(shí)現(xiàn)功能第 7 頁(yè)4.2.界面設(shè)計(jì)在菜單里面增加繪圖按鈕,包括“圖形樣式”、“顏色樣式”、“畫(huà)筆樣式”和“線型樣式”四個(gè)子按鈕;在工具欄里面添加相應(yīng)的快捷按鈕,更方便于繪圖時(shí)候的操作。添加菜單欄的項(xiàng)目:菜單項(xiàng)ID菜單項(xiàng)名稱(chēng)菜單項(xiàng)命令響應(yīng)函數(shù)IDM_
28、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略粗OnCpbigIDM_CPMORE更粗OnCpmoreIDM_LSTYLE實(shí)線OnLstyleIDM_LSTYLEDASH虛線OnLst
29、yledashIDM_LSTYLEDOT點(diǎn)線OnLstyledot第 8 頁(yè)添加工具欄的項(xiàng)目:菜單項(xiàng)ID菜單項(xiàng)名稱(chē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_SPSLIM標(biāo)準(zhǔn)OnSpslimIDM_SPMIDDLE一般OnSpmiddleIDM_SPBIG略粗OnSpbigIDM_SPMORE更
30、粗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)的圖形和屬性按鈕時(shí),即可改變所要畫(huà)的圖形以及畫(huà)筆的屬性。4.3.1.繪圖:左鍵點(diǎn)擊工具欄的四個(gè)繪圖按鈕的任意一個(gè)可以選擇自己需要的圖形(點(diǎn)、直線、矩形、橢圓),如下圖所示:第 9 頁(yè)4.3.2.顏色:左鍵點(diǎn)擊工具欄的四個(gè)顏色按鈕可以選擇顏色(紅色、綠色、藍(lán)色、黃色)還可以在菜單欄的繪圖的顏色樣式里面點(diǎn)擊更多出現(xiàn)調(diào)色板選擇更多的顏色,如下圖所示: 4.3.3.筆寬:左鍵點(diǎn)擊菜單欄的畫(huà)筆樣式或工具欄以
31、下四個(gè)按鈕即可改變畫(huà)筆的寬度,如下圖所示:第 10 頁(yè)4.3.4.線型:左鍵點(diǎn)擊菜單欄的線型樣式或在工具欄點(diǎn)擊以下三個(gè)按鈕可以選擇實(shí)線、虛線和點(diǎn)線的線型,如下圖所示: 5. 心得體會(huì)這次課程設(shè)計(jì)我成功的完成了。通過(guò)本次的課程設(shè)計(jì),我學(xué)會(huì)了運(yùn)用鼠標(biāo)點(diǎn)擊完成繪制點(diǎn)、直線、矩形和橢圓的繪圖功能。編寫(xiě)一個(gè)簡(jiǎn)單的繪圖程序,完成了繪圖時(shí)圖形、顏色、畫(huà)筆寬度以及線型的選擇?;谶@次的課設(shè),對(duì)菜單界面的建立,消息響應(yīng)函數(shù)處理,創(chuàng)建句柄都比較熟悉了,但是難的地方在于代碼的編寫(xiě)。在這次的課設(shè)中由于要繪制圖形,所以比較關(guān)鍵的是坐標(biāo)(m_point,point)兩個(gè)起點(diǎn)和終點(diǎn)的。因此,我設(shè)立了消息響應(yīng)函數(shù)OnLBut
32、tonDown()以及OnLButtonUp()還獲取鼠標(biāo)的當(dāng)前坐標(biāo)和終點(diǎn)坐標(biāo)。繪制圖形也是在OnLButtonUp()的函數(shù)里面實(shí)現(xiàn)的。為了實(shí)現(xiàn)圖形的重繪,定義了一個(gè)Cdraw的類(lèi),在里面重新定義了變量用于保存已繪的圖形,其中還是使用了MFC系統(tǒng)自帶的一個(gè)CPtrArray動(dòng)態(tài)數(shù)組。在OnLButtonUp()里面繪制圖形,通過(guò)自定義的類(lèi)Cdraw與動(dòng)態(tài)數(shù)組CPtrArray在OnDraw()里面實(shí)現(xiàn)重繪,這樣使得整個(gè)程序的結(jié)構(gòu)較為清楚和簡(jiǎn)便。通過(guò)這次的課設(shè)讓我明白了即使一個(gè)小小的繪圖程序都是如此復(fù)雜,更何況是電腦里面的成千上萬(wàn)的程序呢,自己知道的東西還是太少了,以后要加強(qiáng)學(xué)習(xí)。6. 參考文
33、獻(xiàn)【1】 孫鑫 VC+深入詳解(修訂版) 電子工業(yè)出版社 2012年【2】 梁普選 Visual C+程序設(shè)計(jì)與實(shí)踐 清華大學(xué)出版 2005年【3】 嚴(yán)華峰 VISUAL C+課程設(shè)計(jì)案例精編(第二版)中國(guó)水利水電出版社 2004年【4】 魏亮、李春葆等 Visual C+程序設(shè)計(jì)例學(xué)與實(shí)踐 清華大學(xué)出版社 2006年 7. 附錄7.1. 調(diào)試報(bào)告開(kāi)始時(shí)沒(méi)有創(chuàng)建Cdraw類(lèi)來(lái)保存已經(jīng)繪制的圖形,所以每次在繪好圖形以后拉動(dòng)窗口,圖形被刷新就消失了。在創(chuàng)建了Cdraw類(lèi)后我們通過(guò)系統(tǒng)自帶的動(dòng)態(tài)數(shù)組保存已繪的圖形,在在OnDraw()里面調(diào)用以保存的圖形,則在拖動(dòng)窗口時(shí)圖形不消失。第 11 頁(yè)7.2
34、. 調(diào)試結(jié)果1、 編譯運(yùn)行后的窗口如下:2、 改變繪圖的畫(huà)筆粗細(xì),顏色、形狀得到的窗口如下:7.3. 關(guān)鍵源代碼1、在CZYFdrawVIEW類(lèi)的頭文件中加入私有成員變量:private:int m_lstyle;int m_pwidth;CPtrArray m_cptArray;第 12 頁(yè) COLORREF m_color;CPoint m_point;UINT m_type;2、其中各個(gè)成員變量的代碼實(shí)現(xiàn)如下:void CZYFdrawView:OnDdot() /點(diǎn)/ 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 頁(yè)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);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;/ 彈出對(duì)話框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 頁(yè)/ 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() /實(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 command handler code herem_lstyle=2;3、在OnLButtonDown()中實(shí)現(xiàn)記錄起點(diǎn):void CZYFd
40、rawView:OnLButtonDown(UINT nFlags, CPoint point) 第 15 頁(yè)/ TODO: Add your message handler code here and/or call defaultm_point=point;CView:OnLButtonDown(nFlags, point);4、在OnLButtonUp()中實(shí)現(xiàn)繪畫(huà)圖形功能的代碼如下: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);/空白畫(huà)刷 使圖形不覆蓋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()中實(shí)現(xiàn)圖形重繪之前要自己重新定義一個(gè)新的類(lèi)”Cdraw”,并在類(lèi)中保存需要保存的變量代碼如下:第 16 頁(yè)Cdraw類(lèi)變量全部設(shè)為共有類(lèi)型的:class Cdraw public:int m_lstyle;int m_pwidth;UINT m_type;COLORREF m_
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 讀書(shū)讓我成長(zhǎng)一本好書(shū)的讀后感(14篇)
- 我家的小動(dòng)物伙伴寫(xiě)物作文(10篇)
- 商業(yè)合作推廣與營(yíng)銷(xiāo)合作協(xié)議
- 2025年鍋爐檢驗(yàn)員資格考試試卷:鍋爐檢驗(yàn)員考試備考資料大全
- 農(nóng)村種植結(jié)構(gòu)調(diào)整與技術(shù)支持協(xié)議
- 2025年特種設(shè)備安全管理人員安全生產(chǎn)法規(guī)與實(shí)操試題匯編
- 2025年高壓電工考試題庫(kù):高壓操作安全規(guī)范綜合應(yīng)用試題
- 2025年電子商務(wù)師(初級(jí))考試試卷:電子商務(wù)法律法規(guī)在電商運(yùn)營(yíng)中的應(yīng)用案例分析
- 酒店住宿客戶信息保護(hù)協(xié)議
- 現(xiàn)代物流管理系統(tǒng)優(yōu)化研究題
- 藝術(shù)中國(guó)智慧樹(shù)知到期末考試答案2024年
- 1000MW超超臨界火電機(jī)組深度調(diào)峰研究
- 醫(yī)?;鸨O(jiān)管知識(shí)考試題庫(kù)300題(含答案)
- 小學(xué)優(yōu)美的開(kāi)頭結(jié)尾集錦作文開(kāi)頭結(jié)尾優(yōu)美句段
- 鹽城市2022-2023學(xué)年七年級(jí)下學(xué)期數(shù)學(xué)期末試卷(含答案解析)
- 采購(gòu)管理的綠色采購(gòu)與可持續(xù)發(fā)展
- 誠(chéng)信與職業(yè)道德培訓(xùn)課程課件
- 礦產(chǎn)資源評(píng)估報(bào)告
- 巖土鉆探工程課件
- 兒科執(zhí)業(yè)醫(yī)師考試??碱}
- 工程建設(shè)項(xiàng)目的生命周期培訓(xùn)
評(píng)論
0/150
提交評(píng)論