




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MFC繪圖映射模式:我們需要先清楚幾個(gè)定義:客戶(hù)區(qū)坐標(biāo):應(yīng)用程序的客戶(hù)區(qū),左上角(0,0)屏幕坐標(biāo):包括整個(gè)屏幕坐標(biāo),(0,0);屏幕坐標(biāo)用在WM_MOVE消息中(對(duì)于非子窗口)以及下面的Windows函數(shù)中:CreateWindow和MoveWindow(都對(duì)于非子窗口)、GetMessage、GetCursorPos、GetWindowRect、WindowFromPoint和SetBrushOrg中。用函數(shù)ClientToScreen和ScreenToClient可以將客戶(hù)區(qū)域坐標(biāo)轉(zhuǎn)換成屏幕區(qū)域坐標(biāo),或反之。全窗口坐標(biāo):一個(gè)程序的整個(gè)窗口,包括標(biāo)題條。菜單。滾動(dòng)條和窗口框,(0,0).使
2、用GetWindowDC得到的窗口設(shè)備環(huán)境,可以將邏輯單位轉(zhuǎn)換成窗口坐標(biāo)。邏輯坐標(biāo)系:設(shè)備坐標(biāo)系:窗口坐標(biāo):視口坐標(biāo):數(shù)據(jù)顯示和圖形繪制并不是在屏幕上直接進(jìn)行的,而是首先將圖形繪制到一個(gè)具有邏輯坐標(biāo)系的虛擬窗口中,然后在根據(jù)預(yù)先設(shè)置好的映射模式,將虛擬窗口中的圖形或圖像映射到屏幕或打印機(jī)等設(shè)備中。虛擬的窗口叫窗口window,顯示圖像的設(shè)備就是視口viewport.繪制圖像的過(guò)程:先繪制到虛擬窗口(邏輯坐標(biāo))(映射模式)屏幕或打印機(jī)等設(shè)備(設(shè)備坐標(biāo))邏輯原點(diǎn):邏輯坐標(biāo)原點(diǎn)算作是窗口中的一個(gè)固定的點(diǎn),通過(guò)該點(diǎn)引出兩條坐標(biāo)線,建立邏輯坐標(biāo)系,長(zhǎng)度單位和正方向通過(guò)setmapmode()來(lái)設(shè)置。窗口
3、原點(diǎn):只是邏輯坐標(biāo)系中一個(gè)可變點(diǎn),這個(gè)點(diǎn)通過(guò)SetWindowOrg來(lái)設(shè)置。設(shè)備原點(diǎn):設(shè)備坐標(biāo)原點(diǎn)可看作在視口的一個(gè)固定點(diǎn),對(duì)于屏幕而言,它對(duì)應(yīng)于左上角點(diǎn),通過(guò)這個(gè)點(diǎn)建立設(shè)備坐標(biāo)系,長(zhǎng)度單位像素xà、y向下視口原點(diǎn):視口原點(diǎn)是設(shè)備坐標(biāo)系中的一個(gè)可變的點(diǎn),這個(gè)點(diǎn)的坐標(biāo)可以通過(guò)SetViewOrg來(lái)設(shè)置。邏輯坐標(biāo)系和設(shè)備坐標(biāo)系的聯(lián)系:是通過(guò)窗口原點(diǎn)和視口原點(diǎn)聯(lián)系的,當(dāng)圖像各點(diǎn)從邏輯坐標(biāo)系向設(shè)備坐標(biāo)系映射時(shí),根據(jù)坐標(biāo)之間的換算關(guān)系,換算成圖像各點(diǎn)在設(shè)備坐標(biāo)中相對(duì)于視口原點(diǎn)的位置,實(shí)現(xiàn)坐標(biāo)映像。實(shí)際上視口原點(diǎn)和窗口原點(diǎn)是同一個(gè)點(diǎn)(默認(rèn)的都是(0,0),在設(shè)備坐標(biāo)系和邏輯坐標(biāo)系中有不同的坐標(biāo)值
4、,但是這兩種坐標(biāo)系位置是固定的,原點(diǎn)都是(0,0)(或者更標(biāo)準(zhǔn)一些:XL-XLO=(xWindowExt/xViewportExt)*(XD-XDO)YL-YLO=(yWindowExt/yViewportExt)*(YD-YDO));L表示邏輯坐標(biāo)系,D表示設(shè)備坐標(biāo)系, LO窗口原點(diǎn),DO設(shè)備原點(diǎn)邏輯坐標(biāo)系和設(shè)備坐標(biāo)系轉(zhuǎn)換步驟:設(shè)置映射模式設(shè)置窗口原點(diǎn)設(shè)置視口原點(diǎn)坐標(biāo)轉(zhuǎn)換(windows自行處理)例子1. MM_TEXT 模式是默認(rèn)情況下的模式,坐標(biāo)原點(diǎn)位于客戶(hù)區(qū)的左上角,x軸水平方向向右,y軸垂直向下,坐標(biāo)基本單位為一個(gè)像素。Window: viewport 1:1(1) pDC->
5、SetMapMode(MM_TEXT);/設(shè)置映射模式MM_TEXTpDC->SetWindowOrg(100,100);/不設(shè)置時(shí),(0,0)點(diǎn)窗口坐標(biāo)(0,0)/CPoint point = pDC->GetWindowOrg();/pDC->TextOut(point.x,point.y,"this is app");pDC->SetViewportOrg(100,100);/pDC->TextOut(point.x+200,point.y+200,"this is app2");pDC->Rectangle(C
6、Rect(100,100,300,300);MM_TEXT:XL-XLO=N*(XD-XDO);100-100=N*(XD-100)->XD=100;N=1;(100,100)->(100,100)YL-YLO=N*(YD-YDO);100-100=N*(YD-100)->YD=100;300-100=1*(XD-100);XD=300300-100=1*(YD-100);YD=300;例子2:pDC->SetMapMode(MM_TEXT);/設(shè)置映射模式/pDC->SetWindowOrg(100,100);/不設(shè)置時(shí),(0,0)點(diǎn)窗口坐標(biāo)(0,0)/CPoi
7、nt point = pDC->GetWindowOrg();/pDC->TextOut(point.x,point.y,"this is app");pDC->SetViewportOrg(100,100);/pDC->TextOut(point.x+200,point.y+200,"this is app2");pDC->Rectangle(CRect(100,100,300,300);Windoworg(0,0),viewportorg(100,100)100-0=1*(XD1-100);XD1=200;100-0=1
8、*(YD1-100);YD1=200;(200,200),(400,400)例子3:pDC->SetMapMode(MM_TEXT);/設(shè)置映射模式pDC->SetWindowOrg(100,100);/不設(shè)置時(shí),(0,0)點(diǎn)窗口坐標(biāo)(0,0)/CPoint point = pDC->GetWindowOrg();/pDC->TextOut(point.x,point.y,"this is app");/pDC->SetViewportOrg(100,100);/pDC->TextOut(point.x+200,point.y+200,&
9、quot;this is app2");pDC->Rectangle(CRect(100,100,300,300);Windoworg(100,100),viewportorg(0,0)100-100=1*(XD1-0);XD1=0;100-100=1*(YD1-0);YD1=0;(0,0)->(200,200)例子4:CRect rect;/聲明客戶(hù)區(qū)矩形GetClientRect(&rect);/獲得客戶(hù)區(qū)坐標(biāo)pDC->SetMapMode(MM_TEXT);/設(shè)置映射模式pDC->SetWindowOrg(100,100);/不設(shè)置時(shí),(0,0)
10、點(diǎn)窗口坐標(biāo)(0,0)/CPoint point = pDC->GetWindowOrg();/pDC->TextOut(point.x,point.y,"this is app");pDC->SetViewportOrg(100,100);/pDC->TextOut(point.x+200,point.y+200,"this is app2");pDC->Rectangle(CRect(100,100,300,300);在客戶(hù)區(qū)繪制;例子5MM_LOMETRIC每個(gè)邏輯坐標(biāo)系轉(zhuǎn)換為0.1mm,x->,y向上(100,1
11、00)=>(10mm,10mm);(300,300)=>(30mm,30mm)例子:各向異性模式:MM_ANISOTROPIC ,xWindow:xViewport yWindow:yViewport兩個(gè)比例結(jié)果不同;如果相同則是MM_ISOTROPIC;邏輯坐標(biāo)系和設(shè)備坐標(biāo)系并沒(méi)有發(fā)生變化。只是在設(shè)備坐標(biāo)系中,坐標(biāo)的值如果為負(fù),則是顯示到x軸上方,實(shí)際是看不到的。CRect rect;/聲明客戶(hù)區(qū)矩形GetClientRect(&rect);/獲得客戶(hù)區(qū)坐標(biāo)pDC->SetMapMode(MM_ANISOTROPIC);/設(shè)置映射模式pDC->SetWindo
12、wExt(rect.Width(),rect.Height();pDC->SetViewportExt(rect.Width(),-rect.Height();pDC->Rectangle(CRect(100,-100,300,-300);100-0=1*(XD-0);XD=100;-100-0=-1*(YD-0);YD=100;(100,100)(300,-300)->(300,300);例子CRect rect;/聲明客戶(hù)區(qū)矩形GetClientRect(&rect);/獲得客戶(hù)區(qū)坐標(biāo)pDC->SetMapMode(MM_ANISOTROPIC);/設(shè)置映射
13、模式pDC->SetWindowExt(rect.Width(),rect.Height();pDC->SetViewportExt(rect.Width(),-rect.Height();pDC->Rectangle(CRect(100,100,300,300);(100,100)(100,100)(300,300)(300,300)例子:(MM_ANISOTROPIC模式如果比例相同(變成各同向性),各異向性模式設(shè)置失效,變成MM_TEXTCRect rect;/聲明客戶(hù)區(qū)矩形GetClientRect(&rect);/獲得客戶(hù)區(qū)坐標(biāo)pDC->SetMapMode(MM_ANISOTROPIC);/設(shè)置映射模式pDC->SetWindowExt(rect.Width(),rect.Height();pDC->SetViewportExt(rect.Width(),rect.Height();pDC->Rectangle(CRect(100,100,300,300);模式MM_ISOTROPIC同模式MM_ANISOTROPIC 用方類(lèi)似,但是需要注意比例設(shè)置相同。其它幾個(gè)模式(邏輯坐標(biāo)系變化了,x->,y向上。):同時(shí)也就是長(zhǎng)度轉(zhuǎn)換大
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 統(tǒng)計(jì)學(xué)核心方法考察內(nèi)容試題及答案
- 計(jì)算機(jī)基礎(chǔ)知識(shí)實(shí)戰(zhàn)演練2024年試題及答案
- 物資采購(gòu)合同書(shū)
- 高效學(xué)習(xí)策略的語(yǔ)文試題及答案
- 2024年?duì)I養(yǎng)師考試準(zhǔn)備資料試題及答案
- 六年級(jí)語(yǔ)文班級(jí)月考試題及答案
- 一年級(jí)語(yǔ)文朗讀技巧試題及答案
- 計(jì)算機(jī)基礎(chǔ)知識(shí)的有效測(cè)試試題及答案
- 2024藥理學(xué)基礎(chǔ)知識(shí)試題及答案
- 全面提升汽車(chē)維修工素質(zhì)的探索試題及答案
- 高中生物基礎(chǔ)知識(shí)單選題100道及答案解析
- 2025屆高考語(yǔ)文復(fù)習(xí):歌曲《孤勇者》素材運(yùn)用 課件
- 中醫(yī)四季養(yǎng)生之道課件
- 2023六年級(jí)英語(yǔ)上冊(cè) Unit 2 Ways to go to school說(shuō)課稿 人教PEP
- 《無(wú)人機(jī)法律法規(guī)知識(shí)》課件-第7章 無(wú)人機(jī)運(yùn)行管理
- 醫(yī)學(xué)影像檢查資料互認(rèn)項(xiàng)目清單
- 2024-2030年瓊膠酶行業(yè)市場(chǎng)發(fā)展分析及前景趨勢(shì)與投資研究報(bào)告
- -構(gòu)建我國(guó)個(gè)人破產(chǎn)法律制度研究
- 中外飲食文化智慧樹(shù)知到答案2024年三亞航空旅游職業(yè)學(xué)院
- 初中必背古詩(shī)文138首
- 2024年物業(yè)管理師(中級(jí))考前必刷必練題庫(kù)500題(含真題、必會(huì)題)
評(píng)論
0/150
提交評(píng)論