windows设备坐标和逻辑坐标的转换
設備坐標通俗的講就是我們看到的我們的視圖坐標,它包含屏幕坐標、窗體坐標和客戶區坐標,他們都是以窗體的左上角為準的坐標,并且是從左到右,從上到下的坐標
簡單總結一下他的特點:x坐標是從左到右,y坐標是從上到下的,原點坐標就是我們的屏幕左上角huo'zh餓我們的窗體左上角。
邏輯坐標就是我們繪圖需要參考的坐標系,所有的繪圖操作都是基于邏輯坐標來進行操作的,所以要制作繪圖軟件或者繪制我們想要的特效必須要了解一下邏輯坐標,也需要我們手動去設置我們自定義的邏輯坐標,再次基礎上完成漂亮的圖像。
首先說一下坐標系的轉換:
一組很中要的API,SetViewportExtEx和SetWindowExtEx,SetViewportExtEx是設定設備坐標系的坐標屬性,SetWindowExtEx是設定邏輯坐標的的坐標屬性,寫一個函數看不出我們想要的的效果,這兩個函數一定是成對使用,他們可以完成構造設備坐標和邏輯坐標的的比例關系,然后設定完畢我們只需要改變我們的坐標映射模式SetMapMode使用MM_ISOTROPIC模式,我們再去繪制圖形,很快就會發現,我們的圖形變化了,是按照我們設定的邏輯坐標比例進行繪圖的,最終完成的一個工作就是屏幕上的一個像素不是表示1,而是表示我們的設定比例。
有人會說,我們的坐標系很多都是從左到右,從下到上的啊,這樣才符合我們小時候在數學數上學到的坐標系樣式,不要急,上邊兩個API就可以完成這個操作,我們只用設定坐標類型的正負就可以構造我們邏輯坐標的方向了,比如說SetViewportExtEx(hDC,2,2,NULL);SetWindowExtEx(hDC,1,-1,NULL);就把我們的邏輯坐標設定為相比設備坐標的兩倍,方向從左到右,從上到下的坐標了。
再來看看原點的問題把:
設備坐標和邏輯坐標的比例關系設定好了,邏輯坐標的方向也設定好了,那么我們的原點坐標不能總在屏幕左上角把,那樣很不舒服,還有兩個API可以完成這個問題,他們是SetViewportOrgEx和SetWindowOrgEx,這兩個函數完成邏輯坐標原點對應設備坐標原點的位置,當然也可以只使用SetWindowOrgEx一個函數,默認的邏輯坐標就是在屏幕左上角(0,0)的位置,比如說:SetWindowOrgEx(hDC,-100,-100,NULL);我們就把我們的邏輯坐標原點放在相對于視圖坐標(設備坐標)的(100,100)位置了,再次繪圖我們發現我們繪制的圖形偏移了,好了坐標轉換的基礎就這樣子了,其余的就是在這幾個api上發揮了。
轉載于:https://www.cnblogs.com/jiangu66/archive/2013/04/22/3036521.html
總結
以上是生活随笔為你收集整理的windows设备坐标和逻辑坐标的转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode—209. 长度最小的子
- 下一篇: 好东西,资料!!