《計算機圖形學(xué)》課程設(shè)計報告——點陣字符_第1頁
《計算機圖形學(xué)》課程設(shè)計報告——點陣字符_第2頁
《計算機圖形學(xué)》課程設(shè)計報告——點陣字符_第3頁
《計算機圖形學(xué)》課程設(shè)計報告——點陣字符_第4頁
《計算機圖形學(xué)》課程設(shè)計報告——點陣字符_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、 課程設(shè)計報告 課程設(shè)計題目:交互實現(xiàn)點陣字符生成及旋轉(zhuǎn) 專 業(yè): 計算機科學(xué)與技術(shù)班 級: 1120702姓 名: 邱望學(xué) 號: 201120070218指導(dǎo)教師: 桂穎,陸玲 2014年 06月 05日 目錄摘要3一、 課程設(shè)計目的3二、 課程設(shè)計描述及要求3三、 系統(tǒng)開發(fā)環(huán)境3四、 需求分析4五、 總體設(shè)計4六、 詳細(xì)設(shè)計4七、 設(shè)計結(jié)果11八、 總結(jié)13九、 參考資料13 摘要本文主要描述了計算機圖形學(xué)中,運用C+和MFC來實現(xiàn)的建立單文檔以及對話框,實現(xiàn)交互生成和旋轉(zhuǎn)點陣字符的功能。其中簡單的用LButtonDown,LButtonUp等函數(shù)實現(xiàn)了用鼠標(biāo)控制其位置和拖動鼠標(biāo)實現(xiàn)任意角

2、度旋轉(zhuǎn),點陣字符則是通過pDC_>SetPixel()打點的方式繪制。關(guān)鍵字:點陣字符,鼠標(biāo)控制,旋轉(zhuǎn)1、 課程設(shè)計目的 1、 熟練掌握VC+的開發(fā)環(huán)境,會運用MFC建立工程,并運用其中的各種工具實現(xiàn)一些圖形處理的功能。2、 掌握點陣字符的原理。3、 掌握圖形旋轉(zhuǎn)的原理。4、 會運用鼠標(biāo)實現(xiàn)交互。2、 課程設(shè)計描述及要求1、 實現(xiàn)交互生成點陣字符,使其能夠在任意位置顯示。2、 實現(xiàn)交互旋轉(zhuǎn)點陣字符,使其能夠隨著鼠標(biāo)拖動進行旋轉(zhuǎn)。3、 系統(tǒng)開發(fā)環(huán)境開發(fā)工具:Microsoft Visual C+ 6.0 開發(fā)平臺: MFC平臺 操

3、作系統(tǒng):Microsoft Windows7編程語系:C語言語系4、 需求分析 該軟件需要建立單文檔,在其菜單欄添加生成字符和旋轉(zhuǎn)字符的按鈕,設(shè)計對話框,分別實現(xiàn)交互生成點陣字符和交互旋轉(zhuǎn)點陣字符。 5、 總體設(shè)計 運用MFC設(shè)計對話框,為其添加各種控件并建立類向?qū)?。點陣字符則是在一個32*32的區(qū)域能通過pDC->SetPixel(int x,int y,RGB()函數(shù)打點顯示。交互則是使用添加LButtonDown()和LButtonUp()鼠標(biāo)控制函數(shù)進行坐標(biāo)的變換來實現(xiàn)。另外添加編輯框獲取鼠標(biāo)當(dāng)前位置,并顯示出其x、y的坐標(biāo)。6、 詳細(xì)設(shè)計1、 單文檔設(shè)計(1) 進入V

4、isual C+ 6.0 集成開發(fā)環(huán)境后,選擇“文件|新建”菜單,彈出“新建”對話框。單擊“ 工程” 標(biāo)簽, 打開其選項卡, 在其左邊的列表框中選擇MFCAppWizard(EXE)工程類型,在“工程名稱”文本框輸入工程名,在“位置”中選擇工程路徑(如選擇“C:”),則在“C:”下建立一個新的以工程名命名的目錄。如果是第一個工程文件,則必須創(chuàng)建一個新的工作區(qū),選擇“創(chuàng)建新的工作空間”,在“平臺”編輯框中選擇“Win32”,如圖1所示 圖1 新建工程對話框 (2) 單擊“確定”按鈕后,顯示“MFC 應(yīng)用程序向?qū)?步驟1”對話框,選擇“單文檔”選項,如圖2所示。 圖2 “MFC 應(yīng)用程序向?qū)?步驟

5、1”對話框(3) 單擊“完成”按鈕,系統(tǒng)彈出如圖 所示“新建工程信息”對話框。(4) 單擊“確定”按鈕后,就完成了應(yīng)用程序的自動生成,在指定的目錄下生成了應(yīng)用程序框架所必需的全部文件,并且可以直接運行,如圖3所示。 圖 3 應(yīng)用程序界面(5) 選擇“組建|執(zhí)行”,運行結(jié)果如圖 4。 圖 4 程序運行界面2、 點陣字符生成設(shè)計 (1)設(shè)計生成字符對話框,在其面板上添加按鈕,編輯框等控件,如圖5所示。 圖5 生成字符對話框 (2)建立類向?qū)?,添加LButtonDown()函數(shù),用x0、y0存儲鼠標(biāo)獲取的位置。其代碼如下:void CCreat:OnLButtonDown(UINT nFlags,

6、CPoint point) Invalidate();CDialog:OnLButtonDown(nFlags, point);x0=point.x;y0=point.y;m_xx=x0;UpdateData(false);m_yy=y0;UpdateData(false); (3)顯示x、y坐標(biāo)的編輯框分別為Edit1和Edit2,其成員變量分別為m_xx和m_yy。其代碼如下:void CCreat:OnChangeEdit1() UpdateData(false);void CCreat:OnChangeEdit2() UpdateData(false); (4)添加“確定”按鈕的函數(shù),

7、其ID為Button1,顯示點陣字符。其代碼如下:void CCreat:OnButton1() CDC *pDC=GetDC();int d;int r32=0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FFFFF00,0x0FFFFF00,0x0FFFFF00,0x0FFFFF00,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,

8、0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0x00000000,0x00000000,0x00000000,0x00000000;for(int y=0;y<32;y+)for(int x=0;x<32;x+)d=1<<(32-x);if(ry&d)=d)pDC->SetPixel(x+x0,y+y0,RGB(255,0,0); (5)添加“退出”按鈕。3、 點陣字符旋轉(zhuǎn)設(shè)計 (1)設(shè)計“字符旋轉(zhuǎn)”對話框,在其面板上添加按鈕

9、,編輯框等控件,如圖6所示。 圖6 字符旋轉(zhuǎn)對話框 (2)建立類向?qū)?,添加LButtonDown()函數(shù),用n1、m1存儲鼠標(biāo)按下的位置。其代碼如下:void Cspin:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultInvalidate();CDialog:OnLButtonDown(nFlags, point);if(count=0)m=point.x;n=point.y;m_xx=n;UpdateData(false);m_yy=

10、m;UpdateData(false);n1=point.x; m1=point.y; count+; (3)建立類向?qū)?,添加LButtonUp()函數(shù),用n2、m2存儲鼠標(biāo)松開的位置,鼠標(biāo)松開之后清屏,計算旋轉(zhuǎn)角度的三角函數(shù)值,再進行旋轉(zhuǎn)變換。其代碼如下:void Cspin:OnLButtonUp(UINT nFlags, CPoint point) CDialog:OnLButtonUp(nFlags, point);n2=point.x;m2=point.y;xcenter=n+16; /字符中心點位置ycenter=m+16; si1=(n1-xcenter)/sqrt(n1-xce

11、nter)*(n1-xcenter)+(m1-ycenter)*(m1-ycenter);si2=(n2-xcenter)/sqrt(n2-xcenter)*(n2-xcenter)+(m2-ycenter)*(m2-ycenter);co1=(m1-ycenter)/sqrt(n1-xcenter)*(n1-xcenter)+(m1-ycenter)*(m1-ycenter);co2=(m2-ycenter)/sqrt(n2-xcenter)*(n2-xcenter)+(m2-ycenter)*(m2-ycenter);si2_1=si1*co2-si2*co1;co2_1=co2*co1+

12、si2*si1;CDC *pDC=GetDC();for(int i=0;i<32*32;i+)p=(ai-xcenter)*co2_1-(bi-ycenter)*si2_1+xcenter;q=(ai-xcenter)*si2_1+(bi-ycenter)*co2_1+ycenter;pDC->SetPixel(p,q,RGB(255,0,0);pDC->SetPixel(p+1,q,RGB(255,0,0);pDC->SetPixel(p,q+1,RGB(255,0,0);pDC->SetPixel(p+1,q+1,RGB(255,0,0); (4)編輯框顯示

13、字符生成的位置,兩個編輯框的成員變量分別為m_xx、m_yy。void CCreat:OnChangeEdit1() UpdateData(false);void CCreat:OnChangeEdit2() UpdateData(false); (5)添加“確定”按鈕代碼。void Cspin:OnButton2() if(count=1)CDC *pDC=GetDC();int d;int r32=0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF

14、0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FFFFF00,0x0FFFFF00,0x0FFFFF00,0x0FFFFF00,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0x0FF00FF0,0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0xFFFFFF00,0x00000000,0x00000000,0x00000000,0x00000000;int i=0;for(int y=0;y<32;y+)for(int x=0;x&

15、lt;32;x+)d=1<<(32-x);if(ry&d)=d)pDC->SetPixel(x+n,y+m,RGB(255,0,0);ai=x+n;bi=y+m;i+;else NULL; (6)添加“退出”按鈕代碼。 (7)添加靜態(tài)問題,提示操作。7、 設(shè)計結(jié)果1、生成字符 圖72、字符旋轉(zhuǎn) 圖88、 總結(jié) 計算機圖形學(xué)研究的內(nèi)容極其廣泛如圖形硬件、圖形標(biāo)準(zhǔn)、圖形交互技術(shù)、光柵圖形算法、曲線曲面建模、實物造型以及計算機動畫等等。計算機圖形學(xué)主要目的就是利用計算機表達(dá)真實感圖形。經(jīng)過這學(xué)期圖形學(xué)的學(xué)習(xí),我對這門學(xué)科產(chǎn)生了興趣。   這次設(shè)計計算機圖形學(xué)基礎(chǔ)的圖形處理系統(tǒng),我用的是VC+中的MFC,這使我對使用VC+中的MFC編程有了巨大的提高,以前學(xué)可視化編程時只是初步了解MFC,對它的一些功能并不能做到正確使用,而現(xiàn)在經(jīng)過進一步的學(xué)習(xí)我對其中的各種映射機制以及個各類之間的聯(lián)系有了進一步的認(rèn)識。而且通過這學(xué)期圖形學(xué)課程的設(shè)計,實戰(zhàn)演練,不僅復(fù)習(xí)了MFC的知識,而且讓我對計算機圖形學(xué)的算法與實現(xiàn)有個初步的的認(rèn)識

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論