![計算機程序設計實踐MFC畫圖軟件_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/2/ac4e52ec-553f-4926-b63c-8f254cfd6487/ac4e52ec-553f-4926-b63c-8f254cfd64871.gif)
![計算機程序設計實踐MFC畫圖軟件_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/2/ac4e52ec-553f-4926-b63c-8f254cfd6487/ac4e52ec-553f-4926-b63c-8f254cfd64872.gif)
![計算機程序設計實踐MFC畫圖軟件_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/2/ac4e52ec-553f-4926-b63c-8f254cfd6487/ac4e52ec-553f-4926-b63c-8f254cfd64873.gif)
![計算機程序設計實踐MFC畫圖軟件_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/2/ac4e52ec-553f-4926-b63c-8f254cfd6487/ac4e52ec-553f-4926-b63c-8f254cfd64874.gif)
![計算機程序設計實踐MFC畫圖軟件_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/2/ac4e52ec-553f-4926-b63c-8f254cfd6487/ac4e52ec-553f-4926-b63c-8f254cfd64875.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、文檔供參考,可復制、編制,期待您的好評與關注! 計算機程序設計實踐課程設計報告班 級 _ 計算機科學與技術1303班學 號 130405320 姓 名 _韋昌桿_ 指導教師 _楊威_ 2015年1 月 8日交互式繪圖程序1.引言計算機的發(fā)展也是計算機語言的發(fā)展得到了很大的提高,人們的生活中離不 開圖像,除了我們可以用鉛筆在紙上畫圖外,我們也可以在電腦上繪制我們的想象,本實驗就是基于VC+的一個小型的繪圖軟件。 目的:1.掌握用VC+6.0開發(fā)環(huán)境開發(fā)軟件的方法;2.熟悉獲得幫助的方法;3.掌握SDI應用程序結構,熟悉基于對話框的應用程序編程方法;4.掌握用資源編輯器進行圖標,菜單,工具欄,對話
2、框等資源的編輯;5.掌握對話框,常用控件的使用方法;6.熟悉文檔/視圖結構,掌握文檔和視圖的相互控制技巧;2.需求分析2.1系統(tǒng)功能分析自定義一個工具欄,工具欄提供功能按鈕,實現(xiàn)簡單基本圖形的繪制,如直線、矩形、圓形、橢圓形、扇形,多邊形,填充色等。實現(xiàn)對圖形的交互編輯,如修改顏色和線型等;2.2系統(tǒng)設計目標本系統(tǒng)實現(xiàn)了繪圖程序的基本功能,新建的工具欄中包含了繪圖的基本按鈕,例如點,直線,矩形,圓,扇形,五角星,多邊形,填充色等在菜單欄中加入了對圖形的基本編輯,比如對圖形邊框的顏色,線型,線寬等編輯在工具中加入了連續(xù)畫筆這一功能,使大家可以在電腦上和在紙上一樣自由的畫圖。3.系統(tǒng)設計 3.1系
3、統(tǒng)功能設計 CGraphics CCGraphicsView CSettingDlg工具欄和菜單欄的命令響應函數(shù)編輯類的消息響應函數(shù)鼠標的消息響應函數(shù)3.2系統(tǒng)工作流程CCGraphicsDocCCGraphicsView CAboutDlgCCGraphicsApp3.3類設計與類結構CGraphics CAboutDlgCCGraphicsAppCCGraphicsDocCCGraphicsViewCMainFrameCSettingDlgGlobals 編輯類的消息響應函數(shù)鼠標的消息響應函數(shù)工具欄和菜單欄的命令響應函數(shù)3.4 開發(fā)與運行環(huán)境 Microsoft Visual c+ 6.0
4、4 設計與實現(xiàn)設計的界面為下圖所示 1.添加消息響應函數(shù)OnSetting(),并添加頭文件"SettingDlg.h",在view類中添加成員變量m_nLineWidth,初始化。給單選按鈕增加成員變量m_nLineStyle,初始化。2.當用戶點擊OK時,將其保存: CSettingDlg dlg;dlg.m_nLineWidth=m_nLineWidth;/*保存用戶設定的值*/dlg.m_nLineStyle=m_nLineStyle;if (IDOK=dlg.DoModal()m_nLineWidth=dlg.m_nLineWidth;/*點擊確定時保存下來*/m
5、_nLineStyle=dlg.m_nLineStyle;3.對顏色這一項增加命令響應,創(chuàng)建dlg對象,并在view類中增加成員變量m_clr,初始化:CColorDialog dlg;dlg.m_cc.Flags|=CC_RGBINIT; /*標記*/ dlg.m_cc.rgbResult=m_clr; /*保存用戶設定的值*/if(IDOK=dlg.DoModal()m_clr=dlg.m_cc.rgbResult; /*點擊確定時保存下來*/4.添加繪圖菜單,添加菜單項,并添加消息響應函數(shù),如下圖所示:5.在之前的OnLButtonUp函數(shù)中加入畫筆函數(shù),并將之前設定的m_nLineSt
6、yle,m_nLineWidth,m_clr作為畫筆函數(shù)的形參添加到其中,并作為nDrawType=9對其進行響應: CClientDC dc(this);CPen pen(m_nLineStyle,m_nLineWidth,m_clr);/*繪制畫筆*/dc.SelectObject(&pen);6.捕獲鼠標移動命令并將畫筆函數(shù)寫入其中:dc.MoveTo(m_ptOrigin); dc.LineTo(point); m_ptOrigin=point;7.對填充色增加命令響應,在響應函數(shù)中將nDrawType=10寫在里面,在OnLButtonUp中編寫函數(shù): CBrush brFi
7、ll; brFill.CreateSolidBrush(m_clr);pBrush = dc.SelectObject(&brFill);dc.ExtFloodFill(point.x,point.y, dc.GetPixel(point), FLOODFILLSURFACE);dc.SelectObject(pBrush);8.對橡皮增加命令響應,在響應函數(shù)中將nDrawType=11,寫在里面,,在OnMouseMove中編寫函數(shù): CClientDC dc(this); CPen pen(0,10,RGB(255,255,255); dc.SelectObject(&pe
8、n); dc.MoveTo(m_ptOrigin); dc.LineTo(point); m_ptOrigin=point;測試與運行結果: 無錯誤和警告,運行時,符合預先設定的標準5結語 5.1結論與討論:通過認真學習視頻和研究課外書籍以及網(wǎng)上查資料,不斷嘗試,完成了任務,基本滿足了設計的要求。5.2 設計體會: 通過親手操作,明顯感到編程的不易。因為能力的不足,多處函數(shù)的實現(xiàn)通過看書和視頻的情況下寫出來。為得到更好的程序,今后還須努力鉆研編程以獲得更好的成果。本系統(tǒng)適合運行于XP、WIN7等系統(tǒng)平臺下。 參考文獻VC+深入詳解 孫鑫 編著 計算機程序設計實踐課程設計任務劃分課程設計題目:姓
9、 名設計職務任 務工作量比例寧相如組長將組員查找并編寫的程序代碼整理到主程序中40%李則漢組員查找并編寫工具菜單項的函數(shù)30%韋昌桿組員查找并編寫繪圖菜單項的函數(shù)30% 附錄CCGraphicsView:CCGraphicsView()/ TODO: add construction code here m_nDrawType=0; /*用來保存用戶的選擇*/m_ptOrigin=0; /* 保存下來的鼠標左鍵按下的點,即原點為(0,0 ) */m_nLineWidth=0; /*用戶輸入的線寬*/m_nLineStyle=0; /*線型*/m_clr=RGB(0,0,0); /*顏色*/m_
10、bDraw=FALSE; CObArray m_backup; m_Index=0; m_IsLastMove=false;void CCGraphicsView:OnDot() / TODO: Add your command handler code herem_nDrawType=1; void CCGraphicsView:OnLine() / TODO: Add your command handler code herem_nDrawType=2; void CCGraphicsView:OnRectangle() / TODO: Add your command handler
11、code herem_nDrawType=3; void CCGraphicsView:OnEllipse() / TODO: Add your command handler code herem_nDrawType=4; void CCGraphicsView:OnArc() / TODO: Add your command handler code herem_nDrawType=5; void CCGraphicsView:OnChord() / TODO: Add your command handler code herem_nDrawType=6; void CCGraphics
12、View:OnPie() / TODO: Add your command handler code herem_nDrawType=7; void CCGraphicsView:OnRoundrect() / TODO: Add your command handler code herem_nDrawType=8; void CCGraphicsView:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultm_ptOrigin=point
13、; /*將按下的點保存在成員變量當中*/m_bDraw=TRUE;CView:OnLButtonDown(nFlags, point);void CCGraphicsView:OnLButtonUp(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultCClientDC dc(this);CPen pen(m_nLineStyle,m_nLineWidth,m_clr);/*繪制畫筆*/dc.SelectObject(&pen);CBrush *pBrush=C
14、Brush:FromHandle(HBRUSH)GetStockObject(NULL_BRUSH); /*創(chuàng)建透明畫刷*/dc.SelectObject(pBrush); /*將畫刷選到設備描述表中*/switch(m_nDrawType)case 1: dc.SetPixel(point,m_clr);break;case 2: dc.MoveTo(m_ptOrigin); dc.LineTo(point);break;case 3: dc.Rectangle(m_ptOrigin.x,m_ptOrigin.y,point.x,point.y);break;case 4: dc.Ellip
15、se(m_ptOrigin.x,m_ptOrigin.y,point.x,point.y);break;case 5: dc.Arc(point.x-100,point.y-100,point.x+100,point.y+100,point.x-100,point.y,point.x+100,point.y);break;case 6: dc.Chord(point.x-100,point.y-30,point.x+100,point.y+30,point.x-100,point.y,point.x+100,point.y);break;case 7: dc.Pie(point.x-100,p
16、oint.y-100,point.x+100,point.y+100,point.x-100,point.y,point.x+100,point.y);break;case 8: dc.RoundRect(m_ptOrigin.x,m_ptOrigin.y,point.x,point.y,50,50); break;case 10: CBrush brFill;brFill.CreateSolidBrush(m_clr);pBrush = dc.SelectObject(&brFill);dc.ExtFloodFill(point.x,point.y, dc.GetPixel(poin
17、t), FLOODFILLSURFACE);dc.SelectObject(pBrush);m_bDraw=FALSE;CView:OnLButtonUp(nFlags, point);void CCGraphicsView:OnSetting() /*響應設置按鈕*/ TODO: Add your command handler code hereCSettingDlg dlg;dlg.m_nLineWidth=m_nLineWidth;/*保存用戶設定的值*/dlg.m_nLineStyle=m_nLineStyle;if (IDOK=dlg.DoModal() m_nLineWidth=
18、dlg.m_nLineWidth;/*點擊確定時保存下來*/ m_nLineStyle=dlg.m_nLineStyle;void CCGraphicsView:OnColor() /*響應顏色*/ TODO: Add your command handler code hereCColorDialog dlg;dlg.m_cc.Flags|=CC_RGBINIT; /*標記*/ dlg.m_cc.rgbResult=m_clr; /*保存用戶設定的值*/if(IDOK=dlg.DoModal()m_clr=dlg.m_cc.rgbResult; /*點擊OK時保存下來*/void CCGra
19、phicsView:OnMouseMove(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultCClientDC dc(this); CPen pen(m_nLineStyle,m_nLineWidth,m_clr);/*繪制畫筆*/dc.SelectObject(&pen); CBrush *pbrush=CBrush:FromHandle(HBRUSH)GetStockObject(NULL_BRUSH);dc.SelectObject(pbrush);
20、switch(m_nDrawType) case 9: if(m_bDraw=TRUE) CClientDC dc(this); CPen pen(m_nLineStyle,m_nLineWidth,m_clr);/*繪制畫筆*/ dc.SelectObject(&pen); dc.MoveTo(m_ptOrigin); dc.LineTo(point); m_ptOrigin=point;break; case 11: if(m_bDraw=TRUE) CClientDC dc(this); CPen pen(0,10,RGB(255,255,255); dc.SelectObjec
21、t(&pen); dc.MoveTo(m_ptOrigin); dc.LineTo(point); m_ptOrigin=point;break; CView:OnMouseMove(nFlags, point);void CCGraphicsView:OnPen() / TODO: Add your command handler code herem_nDrawType=9;void CCGraphicsView:OnFillcolorSet() / TODO: Add your command handler code herem_nDrawType=10;void CCGrap
22、hicsView:OnRubber() / TODO: Add your command handler code herem_nDrawType=11;int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)if (CFrameWnd:OnCreate(lpCreateStruct) = -1)return -1;if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBR
23、S_FLYBY | CBRS_SIZE_DYNAMIC) |!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)TRACE0("Failed to create toolbarn");return -1; / fail to createif (!m_wndStatusBar.Create(this) |!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)TRACE0("Failed to create status barn");r
24、eturn -1; / fail to create/ TODO: Delete these three lines if you don't want the toolbar to/ be dockablem_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);EnableDocking(CBRS_ALIGN_ANY);DockControlBar(&m_wndToolBar); if (!m_newToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_LEFT/*聲明新工具欄函數(shù)*/| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) |!m_newToolBar.LoadToolBar(IDR_TOOLBAR1)TRACE0("Failed to create toolbarn");return -1; / fail to create m_newToolBar.EnableDocking(CBRS_ALIGN_ANY); DockC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度房地產(chǎn)個人借款擔保合同范本
- 2025年度海洋漁業(yè)資源保護合作開發(fā)合同
- 2025年度風力發(fā)電場建設安全操作合同
- 貴州2025年貴州省司法廳所屬事業(yè)單位招聘2人筆試歷年參考題庫附帶答案詳解
- 衢州2025年浙江衢州職業(yè)技術學院招聘人員9人筆試歷年參考題庫附帶答案詳解
- 醫(yī)療文書管理制度
- 新疆維吾爾自治區(qū)克孜勒蘇柯爾克孜自治州九年級上學期1月期末語文試題(PDF版含答案)
- 河南2024年河南信陽師范大學招聘專職輔導員30人筆試歷年參考題庫附帶答案詳解
- 2025年中國中空導電粒市場調(diào)查研究報告
- 2025年貢丸串項目可行性研究報告
- 2025年冷鏈物流產(chǎn)品配送及倉儲管理承包合同3篇
- 電鍍產(chǎn)業(yè)園項目可行性研究報告(專業(yè)經(jīng)典案例)
- 2025年魯泰集團招聘170人高頻重點提升(共500題)附帶答案詳解
- 2024-2025學年成都高新區(qū)七上數(shù)學期末考試試卷【含答案】
- 企業(yè)員工食堂管理制度框架
- 【開題報告】中小學校鑄牢中華民族共同體意識教育研究
- 2024-2025學年云南省大理州七年級(上)期末英語試卷(含答案)
- SLT824-2024 水利工程建設項目文件收集與歸檔規(guī)范
- 2024年山東鐵投集團招聘筆試參考題庫含答案解析
- (完整word版)中國銀行交易流水明細清單模版
- DB43∕T 859-2014 高速公路機電工程概預算編制辦法及定額
評論
0/150
提交評論