vc窗視口坐標(biāo)轉(zhuǎn)換

vc窗視口坐標(biāo)轉(zhuǎn)換

ID:14629144

大?。?0.50 KB

頁數(shù):3頁

時(shí)間:2018-07-29

vc窗視口坐標(biāo)轉(zhuǎn)換_第1頁
vc窗視口坐標(biāo)轉(zhuǎn)換_第2頁
vc窗視口坐標(biāo)轉(zhuǎn)換_第3頁
資源描述:

《vc窗視口坐標(biāo)轉(zhuǎn)換》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、VC窗視口坐標(biāo)轉(zhuǎn)換在做繪圖程序的時(shí)候,對(duì)于坐標(biāo)映射方式的理解很困難,經(jīng)過不斷的找資料,了解,最后總結(jié),以供大家了解。首先需要了解窗口和視口的概念。窗口是指一個(gè)虛擬存在的屏幕,而視口是在屏幕上看到的視圖客戶區(qū)域。Windows繪圖時(shí),并不是把圖形直接繪制到屏幕上去,而是以各種方式下的坐標(biāo)系將圖形繪制到序幕的窗口中,然后將這個(gè)窗口的內(nèi)容映射到視口中,如果映射到屏幕,就實(shí)現(xiàn)了圖形的顯示,如果映射到打印機(jī),就實(shí)現(xiàn)了圖形的打印。視口原點(diǎn)與窗口原點(diǎn)不同,他們指同一個(gè)點(diǎn)在窗口邏輯坐標(biāo)系和視口設(shè)備坐標(biāo)系的坐標(biāo)值。它決定圖形由窗

2、口到視口時(shí)的相對(duì)位置。邏輯坐標(biāo)就是內(nèi)存中虛擬的坐標(biāo),可以理解為看不見的。而設(shè)備坐標(biāo)就是跟具體的設(shè)備相聯(lián)系的坐標(biāo)系統(tǒng),如:顯示器和打印機(jī)等。不同的映射模式?jīng)Q定了設(shè)備坐標(biāo)和邏輯坐標(biāo)之間的轉(zhuǎn)換關(guān)系,也就是兩種坐標(biāo)系統(tǒng)在相互轉(zhuǎn)換時(shí),邏輯??單位和設(shè)備單位之間的某種比例關(guān)系。舉個(gè)例子,一個(gè)圖用的是邏輯坐標(biāo),當(dāng)它映射到視口時(shí),在視口中的坐標(biāo)單位已經(jīng)不再是原來的邏輯單位(不同方式,單位不一,MM_LOMETRC方式,單位0.1mmm)。而視口的坐標(biāo)單位是像素。它們之間存在一個(gè)轉(zhuǎn)換關(guān)系。在Windows應(yīng)用程序設(shè)計(jì)中,文檔坐標(biāo)

3、系稱作邏輯坐標(biāo)系,視圖坐標(biāo)系稱為設(shè)備坐標(biāo)系。??邏輯坐標(biāo)按照坐標(biāo)設(shè)置方式(又成為映射模式)可分為8種,它們?cè)谧鴺?biāo)上的特性如下表所示:????表7-1?各種映射模式下的坐標(biāo)轉(zhuǎn)換方式????映射模式?邏輯單位?x遞增方向???y遞增方向?????MM_TEXT?像素?向右???向下?????MM_LOMETRIC?0.1mm?向右???向上?????MM_HIMETRIC?0.01mm?向右???向上?????MM_LOENGLISH?0.01inch?向右???向上?????MM_HIENGLISH?0.001i

4、nch?向右???向上?????MM_TWIPS?1/1440inch?向右???向上?????MM_ISOTROPIC?可調(diào)整?(x=y)?可選擇???可選擇?????MM_ANISOTROPIC?可調(diào)整(x!=y)?可選擇???可選擇?????????我們一般使用的映射模式是MM_TEXT,它也是缺省設(shè)置。在該模式下,坐標(biāo)原點(diǎn)在工作區(qū)左上角,而x坐標(biāo)值是向右遞增,y坐標(biāo)值是向下遞增,單位值1代表一個(gè)像素。在此模式下,邏輯坐標(biāo)是像素坐標(biāo),方向也與視口中的方向相同。如果此時(shí)窗口原點(diǎn)與視口原點(diǎn)相同,在圖形映射時(shí),

5、將原封不動(dòng)的由窗口映射到視口。??????????視口設(shè)備坐標(biāo)以像素點(diǎn)為單位,且x軸坐標(biāo)值向右遞增,y軸坐標(biāo)值向下遞增,但原點(diǎn)(0,0)位置卻不限定在工作區(qū)的左上角。依據(jù)設(shè)備坐標(biāo)的原點(diǎn)和用途,可以將Windows下使用的設(shè)備坐標(biāo)系統(tǒng)分為三種:工作區(qū)坐標(biāo)系統(tǒng),窗口坐標(biāo)系統(tǒng)和屏幕坐標(biāo)系統(tǒng)。????(1)工作區(qū)坐標(biāo)系統(tǒng):????  工作區(qū)坐標(biāo)系統(tǒng)是最常見的坐標(biāo)系統(tǒng),它以窗口客戶區(qū)左上角為原點(diǎn)(0,0),主要用于窗口客戶區(qū)繪圖輸出以及處理窗口的一些消息。鼠標(biāo)消息WM_LBUTTONDOWN、WM_MOUSEMOVE傳給

6、框架的消息參數(shù)以及CDC一些用于繪圖的成員都是使用工作區(qū)坐標(biāo)。????(2)屏幕坐標(biāo)系統(tǒng):????  屏幕坐標(biāo)系統(tǒng)是另一類常用的坐標(biāo)系統(tǒng),以屏幕左上角為原點(diǎn)(0,0)。以CreateDC(“DISPLAY”?,?...)或GetDC(NULL)取得設(shè)備上下文時(shí),該上下文使用的坐標(biāo)系就是屏幕坐標(biāo)系。????  一些與窗口的工作區(qū)不相關(guān)的函數(shù)都是以屏幕坐標(biāo)為單位,例如設(shè)置和取得光標(biāo)位置的函數(shù)SetCursorPos()和GetCursorPos();由于光標(biāo)可以在任何一個(gè)窗口之間移動(dòng),它不屬于任何一個(gè)單一的窗口,因

7、此使用屏幕坐標(biāo)。彈出式菜單使用的也是屏幕坐標(biāo)。另外,CreateWindow、MoveWindow、SetWindowPlacement()等函數(shù)用于設(shè)置窗口相對(duì)于屏幕的位置,使用的也是屏幕坐標(biāo)系統(tǒng)。????(3)全窗口坐標(biāo)系統(tǒng):????  窗口坐標(biāo)系統(tǒng)以窗口左上角為坐標(biāo)原點(diǎn),它包含了窗口控制菜單標(biāo)題欄等內(nèi)容。一般情況下很少在窗口標(biāo)題欄上繪圖,因此這種坐標(biāo)系統(tǒng)很少使用。??????????對(duì)于所有映射模式,Windows都用下面兩個(gè)公式將窗口坐標(biāo)轉(zhuǎn)換成視口坐標(biāo):??????xViewport=(xWindow-

8、xWinOrg)*(xViewExt/xWinExt)+xViewOrg??????yViewport=(yWindow-yWinOrg)*(yViewExt/yWinExt)+yViewOrg??????其中,(xWindow,yWindows)是待轉(zhuǎn)換的邏輯點(diǎn),(xViewport,yViewport)是轉(zhuǎn)換后的設(shè)備點(diǎn)。如果設(shè)備坐標(biāo)是客戶區(qū)域坐標(biāo)或全窗口坐標(biāo),則Windows在畫一

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。