




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- MY銀行供應(yīng)鏈金融保理業(yè)務(wù)流程優(yōu)化研究
- 全GFRP筋增強(qiáng)混凝土剪力墻抗震性能研究
- 故事力法則下鄉(xiāng)村文旅景觀規(guī)劃設(shè)計(jì)研究-以浙江新昌縣棠村村為例
- 環(huán)境安全健康之間關(guān)系
- 護(hù)理質(zhì)量管理人員培訓(xùn)大綱
- 肺炎性心臟病護(hù)理
- 甲狀腺結(jié)節(jié)健康教育及指導(dǎo)
- 在線教育社群運(yùn)營(yíng)策劃方案
- 護(hù)理心臟驟停的急救與后續(xù)管理
- 結(jié)腸腫瘤科普
- 2022-2023學(xué)年北京市東城區(qū)高二(下)期末化學(xué)試卷(含解析)
- 防溺水老師培訓(xùn)課件
- 《植物生長(zhǎng)與環(huán)境》課程標(biāo)準(zhǔn)(含課程思政)
- 鐵路行車組織(高職)全套教學(xué)課件
- 注塑標(biāo)準(zhǔn)成型條件表電子表格模板
- 道閘系統(tǒng)施工方案
- 配置管理與漏洞修復(fù)
- 新版中國(guó)復(fù)發(fā)難治性急性髓系白血病診療指南
- 保潔巡查記錄表
- 成事的時(shí)間管理
- 國(guó)開(kāi)大學(xué)2023年01月22503《學(xué)前兒童健康教育活動(dòng)指導(dǎo)》期末考試答案
評(píng)論
0/150
提交評(píng)論