《計(jì)算機(jī)圖形學(xué)》課程設(shè)計(jì)報(bào)告——點(diǎn)陣字符_第1頁(yè)
《計(jì)算機(jī)圖形學(xué)》課程設(shè)計(jì)報(bào)告——點(diǎn)陣字符_第2頁(yè)
《計(jì)算機(jī)圖形學(xué)》課程設(shè)計(jì)報(bào)告——點(diǎn)陣字符_第3頁(yè)
《計(jì)算機(jī)圖形學(xué)》課程設(shè)計(jì)報(bào)告——點(diǎn)陣字符_第4頁(yè)
《計(jì)算機(jī)圖形學(xué)》課程設(shè)計(jì)報(bào)告——點(diǎn)陣字符_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

5、1”對(duì)話框(3) 單擊“完成”按鈕,系統(tǒng)彈出如圖 所示“新建工程信息”對(duì)話框。(4) 單擊“確定”按鈕后,就完成了應(yīng)用程序的自動(dòng)生成,在指定的目錄下生成了應(yīng)用程序框架所必需的全部文件,并且可以直接運(yùn)行,如圖3所示。 圖 3 應(yīng)用程序界面(5) 選擇“組建|執(zhí)行”,運(yùn)行結(jié)果如圖 4。 圖 4 程序運(yùn)行界面2、 點(diǎn)陣字符生成設(shè)計(jì) (1)設(shè)計(jì)生成字符對(duì)話框,在其面板上添加按鈕,編輯框等控件,如圖5所示。 圖5 生成字符對(duì)話框 (2)建立類向?qū)?,添加LButtonDown()函數(shù),用x0、y0存儲(chǔ)鼠標(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,顯示點(diǎn)陣字符。其代碼如下: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、 點(diǎn)陣字符旋轉(zhuǎn)設(shè)計(jì) (1)設(shè)計(jì)“字符旋轉(zhuǎn)”對(duì)話框,在其面板上添加按鈕

9、,編輯框等控件,如圖6所示。 圖6 字符旋轉(zhuǎn)對(duì)話框 (2)建立類向?qū)?,添加LButtonDown()函數(shù),用n1、m1存儲(chǔ)鼠標(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ū)В砑覮ButtonUp()函數(shù),用n2、m2存儲(chǔ)鼠標(biāo)松開(kāi)的位置,鼠標(biāo)松開(kāi)之后清屏,計(jì)算旋轉(zhuǎn)角度的三角函數(shù)值,再進(jìn)行旋轉(zhuǎn)變換。其代碼如下:void Cspin:OnLButtonUp(UINT nFlags, CPoint point) CDialog:OnLButtonUp(nFlags, point);n2=point.x;m2=point.y;xcenter=n+16; /字符中心點(diǎn)位置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、字符生成的位置,兩個(gè)編輯框的成員變量分別為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)問(wèn)題,提示操作。7、 設(shè)計(jì)結(jié)果1、生成字符 圖72、字符旋轉(zhuǎn) 圖88、 總結(jié) 計(jì)算機(jī)圖形學(xué)研究的內(nèi)容極其廣泛如圖形硬件、圖形標(biāo)準(zhǔn)、圖形交互技術(shù)、光柵圖形算法、曲線曲面建模、實(shí)物造型以及計(jì)算機(jī)動(dòng)畫等等。計(jì)算機(jī)圖形學(xué)主要目的就是利用計(jì)算機(jī)表達(dá)真實(shí)感圖形。經(jīng)過(guò)這學(xué)期圖形學(xué)的學(xué)習(xí),我對(duì)這門學(xué)科產(chǎn)生了興趣。   這次設(shè)計(jì)計(jì)算機(jī)圖形學(xué)基礎(chǔ)的圖形處理系統(tǒng),我用的是VC+中的MFC,這使我對(duì)使用VC+中的MFC編程有了巨大的提高,以前學(xué)可視化編程時(shí)只是初步了解MFC,對(duì)它的一些功能并不能做到正確使用,而現(xiàn)在經(jīng)過(guò)進(jìn)一步的學(xué)習(xí)我對(duì)其中的各種映射機(jī)制以及個(gè)各類之間的聯(lián)系有了進(jìn)一步的認(rèn)識(shí)。而且通過(guò)這學(xué)期圖形學(xué)課程的設(shè)計(jì),實(shí)戰(zhàn)演練,不僅復(fù)習(xí)了MFC的知識(shí),而且讓我對(duì)計(jì)算機(jī)圖形學(xué)的算法與實(shí)現(xiàn)有個(gè)初步的的認(rèn)識(shí)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論