資源描述:
《計算機程序設(shè)計實踐--mfc畫圖軟件》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、計算機程序設(shè)計實踐課程設(shè)計報告交互式繪圖程序1.引言計算機的發(fā)展也是計算機語言的發(fā)展得到了很大的提高,人們的生活中離不開圖像,除了我們可以用鉛筆在紙上畫圖外,我們也可以在電腦上繪制我們的想象,本實驗就是基于VC++的一個小型的繪圖軟件。目的:1.掌握用VC++6.0開發(fā)環(huán)境開發(fā)軟件的方法;2.熟悉獲得幫助的方法;3.掌握SDI應(yīng)用程序結(jié)構(gòu),熟悉基于對話框的應(yīng)用程序編程方法;4.掌握用資源編輯器進行圖標(biāo),菜單,工具欄,對話框等資源的編輯;5.掌握對話框,常用控件的使用方法;6.熟悉文檔/視圖結(jié)構(gòu),掌握文檔和視圖的相互控制技巧;2.需求分析2.1系統(tǒng)功
2、能分析自定義一個工具欄,工具欄提供功能按鈕,實現(xiàn)簡單基本圖形的繪制,如直線、矩形、圓形、橢圓形、扇形,多邊形,填充色等。實現(xiàn)對圖形的交互編輯,如修改顏色和線型等;2.2系統(tǒng)設(shè)計目標(biāo)本系統(tǒng)實現(xiàn)了繪圖程序的基本功能,新建的工具欄中包含了繪圖的基本按鈕,例如點,直線,矩形,圓,扇形,五角星,多邊形,填充色等在菜單欄中加入了對圖形的基本編輯,比如對圖形邊框的顏色,線型,線寬等編輯在工具中加入了連續(xù)畫筆這一功能,使大家可以在電腦上和在紙上一樣自由的畫圖。3.系統(tǒng)設(shè)計3.1系統(tǒng)功能設(shè)計CGraphicsCCGraphicsViewCSettingDlg工具欄和
3、菜單欄的命令響應(yīng)函數(shù)編輯類的消息響應(yīng)函數(shù)鼠標(biāo)的消息響應(yīng)函數(shù)3.2系統(tǒng)工作流程CCGraphicsDocCCGraphicsViewCAboutDlgCCGraphicsApp3.3類設(shè)計與類結(jié)構(gòu)CGraphicsCAboutDlgCCGraphicsAppCCGraphicsDocCCGraphicsViewCMainFrameCSettingDlgGlobals編輯類的消息響應(yīng)函數(shù)鼠標(biāo)的消息響應(yīng)函數(shù)工具欄和菜單欄的命令響應(yīng)函數(shù)3.4開發(fā)與運行環(huán)境MicrosoftVisualc++6.04設(shè)計與實現(xiàn)設(shè)計的界面為下圖所示1.添加消息響應(yīng)函數(shù)OnSe
4、tting(),并添加頭文件"SettingDlg.h",在view類中添加成員變量m_nLineWidth,初始化。給單選按鈕增加成員變量m_nLineStyle,初始化。2.當(dāng)用戶點擊OK時,將其保存:CSettingDlgdlg;dlg.m_nLineWidth=m_nLineWidth;/*保存用戶設(shè)定的值*/dlg.m_nLineStyle=m_nLineStyle;if(IDOK==dlg.DoModal()){m_nLineWidth=dlg.m_nLineWidth;/*點擊確定時保存下來*/m_nLineStyle=dlg.m_n
5、LineStyle;}3.對顏色這一項增加命令響應(yīng),創(chuàng)建dlg對象,并在view類中增加成員變量m_clr,初始化:CColorDialogdlg;dlg.m_cc.Flags
6、=CC_RGBINIT;/*標(biāo)記*/dlg.m_cc.rgbResult=m_clr;/*保存用戶設(shè)定的值*/if(IDOK==dlg.DoModal()){m_clr=dlg.m_cc.rgbResult;/*點擊確定時保存下來*/}4.添加繪圖菜單,添加菜單項,并添加消息響應(yīng)函數(shù),如下圖所示:5.在之前的OnLButtonUp函數(shù)中加入畫筆函數(shù),并將之前設(shè)定的m_nLi
7、neStyle,m_nLineWidth,m_clr作為畫筆函數(shù)的形參添加到其中,并作為nDrawType=9對其進行響應(yīng):CClientDCdc(this);CPenpen(m_nLineStyle,m_nLineWidth,m_clr);/*繪制畫筆*/dc.SelectObject(&pen);6.捕獲鼠標(biāo)移動命令并將畫筆函數(shù)寫入其中:dc.MoveTo(m_ptOrigin);dc.LineTo(point);m_ptOrigin=point;7.對填充色增加命令響應(yīng),在響應(yīng)函數(shù)中將nDrawType=10寫在里面,在OnLButtonUp
8、中編寫函數(shù):CBrushbrFill;brFill.CreateSolidBrush(m_clr);pBrush=dc.SelectObject(&brFill);dc.ExtFloodFill(point.x,point.y,dc.GetPixel(point),FLOODFILLSURFACE);dc.SelectObject(pBrush);8.對橡皮增加命令響應(yīng),在響應(yīng)函數(shù)中將nDrawType=11,寫在里面,,在OnMouseMove中編寫函數(shù):CClientDCdc(this);CPenpen(0,10,RGB(255,255,255
9、));dc.SelectObject(&pen);dc.MoveTo(m_ptOrigin);dc.LineTo(poin