GDI的座標對映搞了半天才明白

2022-03-05 07:04:07 字數 548 閱讀 5871

只怪我自己太笨了,這麼簡單的東西,搞了半天才弄明白。

首先通過 setmapmode函式修改座標對映模式,我這裡使用了mm_anisotropic模式。

setmapmode(hdc,mm_anisotropic);

然後呼叫setwindowextex函式設定邏輯座標。我們把基數調簡單一點為1,1

setwindowextex(hdc,1,1,null);

再呼叫setviewportextex函式設定裝置座標。

setviewportextex(hdc,2,2,null);

然後呼叫moveto和lineto畫線。

moveto(0,0);lineto(50,50)。

由於我們使用座標對映修改了座標比例。那麼引數裡的實際座標長度應該是move(0 * (2/1),0 * (2/1)) lineto(50 * (2/1), 50 * (2/1));

這樣大家能看明白嗎?

設定dc座標對映,你作畫時的實際座標,就會根據座標對映比例

(viewport ÷ window) 進行縮放。大家可以去實驗一下。

GDI對映模式

gdi 對映模式 mm text 1邏輯單位 1畫素 mm lometric 1邏輯單位 0.1mm mm himetric 1邏輯單位 0.01mm mm loenglish 1邏輯單位 0.01 in 0.254mm mm hienglish 1邏輯單位 0.001 in 0.0254mm mm...

紋理對映座標glTexCoordPointer用法

gltexcoordpointer int size,int type,int stride,buffer pointer 設定頂點陣列為紋理座標快取 其中 size 紋理頂點座標的分量個數 size number of coordinates per vertex type 紋理座標的資料型別 s...

座標系統 對映模式

三種座標系統 螢幕座標 全視窗座標 客戶區座標 clienttoscreen 把客戶區座標轉換到螢幕座標 screentoclient 把螢幕座標轉換到客戶區座標 getwindowrect 以螢幕座標形式獲取整個視窗的位置和大小 getclientrect hwnd,rect dptolp hdc...