資源描述:
《簡單交互式圖形系統(tǒng)的設(shè)計與實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第9章簡單交互式圖形系統(tǒng)的設(shè)計與實現(xiàn)9.1系統(tǒng)簡介9.2系統(tǒng)設(shè)計與實現(xiàn)習(xí)題9.1系統(tǒng)簡介9.1.1系統(tǒng)用戶界面系統(tǒng)運行界面如圖9.1所示。本系統(tǒng)以Windows畫板為設(shè)計原型,在功能上,給用戶提供了畫線、框、圓、多邊形、三維立體、曲線、填充以及動畫、分形算法程序?qū)崿F(xiàn)演示等基本操作,填充方式根據(jù)圖形學(xué)的概念提供了兩種方式,即多邊形填充和種子填充。圖9.1系統(tǒng)運行界面9.1.2系統(tǒng)結(jié)構(gòu)本系統(tǒng)采用樹狀的層次結(jié)構(gòu)進行組織(如圖9.2所示),主要包括文檔管理、窗口管理、圖形編輯管理三大功能模塊。其中文檔管理主要完成文檔的新建、保存、輸出打印等功能;窗口管理
2、定義系統(tǒng)界面風(fēng)格,提供對畫面編輯區(qū)域及工具條、系統(tǒng)狀態(tài)面板、菜單面板等的顯現(xiàn)與隱藏的管理;圖形編輯管理模塊主要用于完成直線、曲線、封閉區(qū)域等的繪制、填充、幾何變換和三維圖形的生成、投影、消隱及顯現(xiàn)。圖9.2系統(tǒng)組成結(jié)構(gòu)9.2系統(tǒng)設(shè)計與實現(xiàn)9.2.1圖形編程的基礎(chǔ)知識VC++是一種面向?qū)ο蟪绦蛟O(shè)計語言,基于面向?qū)ο蟪绦蛟O(shè)計語言的程序設(shè)計方法都支持三種基本的活動:識別對象(Object)和類(Class),描述對象和類之間的關(guān)系,以及通過描述每個類的功能定義對象的行為。1.設(shè)備環(huán)境類CDC類封裝了WindowsAPI中用來畫圖的函數(shù),同時該類負(fù)責(zé)維護
3、設(shè)備環(huán)境。CClientDC類用來創(chuàng)建和破壞一個設(shè)備環(huán)境,它在堆棧中建立。CWindowDC類維護窗口的非客戶區(qū),和CClientDC類一樣。CPaintDC類在構(gòu)造函數(shù)中調(diào)用CWnd∷BeginPaint()獲得設(shè)備環(huán)境,以便在有效的客戶區(qū)進行繪圖。CMetaFileDC類創(chuàng)建一個元文件,可以把它看做是一個屏幕設(shè)備,但其實它是一個磁盤文件。產(chǎn)生的文件可以存放在磁盤中,以后還可以讀入,進行修改。2.圖形對象類CBitmap類建立和控制“位圖”對象(內(nèi)存中的位圖)。CBrush類建立和控制“刷子”對象。填充圖形和繪圖的刷子。CFont類建立與控制字
4、體對象。CPalette類建立和控制調(diào)色板對象。CPen類建立和控制畫筆對象,畫筆是圖形的邊界模式。CRgn類建立和控制GDI繪圖設(shè)備區(qū)域?qū)ο蟆?.2.2程序設(shè)計1.類的設(shè)計本系統(tǒng)主要用到了以下一些類:CJhtxsApp,CMainFrame,CJhtxsView,CJhtxsDoc,CDialog,Cnewbmp其中,CJhtxsApp是應(yīng)用程序類,支持應(yīng)用程序的建立和基本交互;CMainFrame是應(yīng)用程序主窗口框架類,用來實現(xiàn)主窗口的功能;CJhtxsView是應(yīng)用程序主窗口視圖類,支持視圖的功能實現(xiàn);CJhtxsDoc為文檔類,用于實現(xiàn)
5、文檔的功能;CDialog是工具箱類,提供人機消息反饋平臺;Cnewbmp為對象空間類,聚集著CSolid(實體類)、CRect(面類)、CLoop(環(huán)類)、Cline(邊類)、CVertex(頂點類)、CMaterial(材質(zhì)類)、CLightSource(光源類)等所有類的對象。上述各類之間的對應(yīng)關(guān)系結(jié)構(gòu)如圖9.3所示。圖9.3各類之間的對應(yīng)關(guān)系1)CMainFrame主窗口類(CMainFrame)主要定制圖標(biāo)、工具條的建立、顯示和交互,其定義代碼如下:classCMainFrame:publicCFrameWnd{protected:/
6、/createfromserializationonlyCMainFrame();DECLARE-DYNCREATE(CMainFrame)public://Attributespublic:CToolBar*m-pToolsToolbar;//Operationspublic://Overrides//ClassWizardgeneratedvirtualfunctionoverrides//{{AFX-VIRTUAL(CMainFrame)virtualBOOLPreCreateWindow(CREATESTRUCT&cs);//}}A
7、FX-VIRTUAL//Implementationpublic:virtual~CMainFrame();#ifdef-DEBUGvirtualvoidAssertValid()const;virtualvoidDump(CDumpContext&dc)const;#endifprotected://controlbarembeddedmembersCStatusBarm-wndStatusBar;CToolBarm-wndToolBar;//Generatedmessagemapfunctionsprotected://{{AFX-
8、MSG(CMainFrame)afx-msgintOnCreate(LPCREATESTRUCTlpCreateStruct);afx