版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、文檔供參考,可復制、編制,期待您的好評與關(guān)注! 計算機程序設(shè)計實踐課程設(shè)計報告班 級 _ 計算機科學與技術(shù)1303班學 號 130405320 姓 名 _韋昌桿_ 指導教師 _楊威_ 2015年1 月 8日交互式繪圖程序1.引言計算機的發(fā)展也是計算機語言的發(fā)展得到了很大的提高,人們的生活中離不 開圖像,除了我們可以用鉛筆在紙上畫圖外,我們也可以在電腦上繪制我們的想象,本實驗就是基于VC+的一個小型的繪圖軟件。 目的:1.掌握用VC+6.0開發(fā)環(huán)境開發(fā)軟件的方法;2.熟悉獲得幫助的方法;3.掌握SDI應用程序結(jié)構(gòu),熟悉基于對話框的應用程序編程方法;4.掌握用資源編輯器進行圖標,菜單,工具欄,對話
2、框等資源的編輯;5.掌握對話框,常用控件的使用方法;6.熟悉文檔/視圖結(jié)構(gòu),掌握文檔和視圖的相互控制技巧;2.需求分析2.1系統(tǒng)功能分析自定義一個工具欄,工具欄提供功能按鈕,實現(xiàn)簡單基本圖形的繪制,如直線、矩形、圓形、橢圓形、扇形,多邊形,填充色等。實現(xiàn)對圖形的交互編輯,如修改顏色和線型等;2.2系統(tǒng)設(shè)計目標本系統(tǒng)實現(xiàn)了繪圖程序的基本功能,新建的工具欄中包含了繪圖的基本按鈕,例如點,直線,矩形,圓,扇形,五角星,多邊形,填充色等在菜單欄中加入了對圖形的基本編輯,比如對圖形邊框的顏色,線型,線寬等編輯在工具中加入了連續(xù)畫筆這一功能,使大家可以在電腦上和在紙上一樣自由的畫圖。3.系統(tǒng)設(shè)計 3.1系
3、統(tǒng)功能設(shè)計 CGraphics CCGraphicsView CSettingDlg工具欄和菜單欄的命令響應函數(shù)編輯類的消息響應函數(shù)鼠標的消息響應函數(shù)3.2系統(tǒng)工作流程CCGraphicsDocCCGraphicsView CAboutDlgCCGraphicsApp3.3類設(shè)計與類結(jié)構(gòu)CGraphics CAboutDlgCCGraphicsAppCCGraphicsDocCCGraphicsViewCMainFrameCSettingDlgGlobals 編輯類的消息響應函數(shù)鼠標的消息響應函數(shù)工具欄和菜單欄的命令響應函數(shù)3.4 開發(fā)與運行環(huán)境 Microsoft Visual c+ 6.0
4、4 設(shè)計與實現(xiàn)設(shè)計的界面為下圖所示 1.添加消息響應函數(shù)OnSetting(),并添加頭文件"SettingDlg.h",在view類中添加成員變量m_nLineWidth,初始化。給單選按鈕增加成員變量m_nLineStyle,初始化。2.當用戶點擊OK時,將其保存: CSettingDlg dlg;dlg.m_nLineWidth=m_nLineWidth;/*保存用戶設(shè)定的值*/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; /*保存用戶設(shè)定的值*/if(IDOK=dlg.DoModal()m_clr=dlg.m_cc.rgbResult; /*點擊確定時保存下來*/4.添加繪圖菜單,添加菜單項,并添加消息響應函數(shù),如下圖所示:5.在之前的OnLButtonUp函數(shù)中加入畫筆函數(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;測試與運行結(jié)果: 無錯誤和警告,運行時,符合預先設(shè)定的標準5結(jié)語 5.1結(jié)論與討論:通過認真學習視頻和研究課外書籍以及網(wǎng)上查資料,不斷嘗試,完成了任務,基本滿足了設(shè)計的要求。5.2 設(shè)計體會: 通過親手操作,明顯感到編程的不易。因為能力的不足,多處函數(shù)的實現(xiàn)通過看書和視頻的情況下寫出來。為得到更好的程序,今后還須努力鉆研編程以獲得更好的成果。本系統(tǒng)適合運行于XP、WIN7等系統(tǒng)平臺下。 參考文獻VC+深入詳解 孫鑫 編著 計算機程序設(shè)計實踐課程設(shè)計任務劃分課程設(shè)計題目:姓
9、 名設(shè)計職務任 務工作量比例寧相如組長將組員查找并編寫的程序代碼整理到主程序中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); /*將畫刷選到設(shè)備描述表中*/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() /*響應設(shè)置按鈕*/ TODO: Add your command handler code hereCSettingDlg dlg;dlg.m_nLineWidth=m_nLineWidth;/*保存用戶設(shè)定的值*/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; /*保存用戶設(shè)定的值*/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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球電源鋁支架行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國介入穿刺針行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年多層電腦紙打孔折頁機行業(yè)深度研究分析報告
- 2025年寬帶發(fā)射機項目投資可行性研究分析報告
- 2025年塑料人造植物項目可行性研究報告
- 鎳色珠腰行業(yè)行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究分析報告
- 2025年信息安全保密平臺項目投資可行性研究分析報告
- 2025年消防安全服裝項目可行性研究報告
- 2025年露奇項目投資可行性研究分析報告
- 2025年度公司擔保合同擔保責任范圍與界定合同
- 電力溝施工組織設(shè)計-電纜溝
- 《法律援助》課件
- 小兒肺炎治療與護理
- 《高處作業(yè)安全》課件
- 春節(jié)后收心安全培訓
- 小學教師法制培訓課件
- 電梯操作證及電梯維修人員資格(特種作業(yè))考試題及答案
- 市政綠化養(yǎng)護及市政設(shè)施養(yǎng)護服務方案(技術(shù)方案)
- SLT824-2024 水利工程建設(shè)項目文件收集與歸檔規(guī)范
- 鍋爐本體安裝單位工程驗收表格
- 報價單(產(chǎn)品報價單)
評論
0/150
提交評論