簡單談視口座標和視窗座標?

2021-08-28 03:24:38 字數 704 閱讀 7565

視口和視窗座標在gdi中是有這個概念的,正常情況下,這兩個座標一致,即它們的原點和寬高都是相同的,但是我們可以修改這兩個座標系統來簡單快速實現一些變換操作,如縮放等,首先就必須要理解這兩個座標的概念了,簡答說一句話,即:視口座標(物理座標)的高度寬度是確定顯示區域的,而視窗座標(邏輯座標)是為顯示區域刻度尺寸的,所以縮放操作可以通過擴大視口區域的方法來實現。就這麼簡答的記憶,千萬不要混淆。

varsz: tsize;

pt: tpoint;

begin

//setmapmode(self.canvas.handle, mm_isotropic);        //  mm_anisotropic

//修改視窗的寬度和高度,即邏輯座標的寬高

setwindowextex(canvas.handle, clientwidth, clientheight, nil);

//修改視口的寬度和高度,即物理座標的寬高

//suofang為縮放因子,浮點數

setviewportextex(self.canvas.handle, trunc(clientwidth * suofang) , trunc( clie//ntheight * suofang), @sz);

canvas.ellipse(0,0, clientwidth, clientheight);

canvas.textout(0,0, 'hello world');

邏輯座標(視窗) 裝置座標(視口)

視窗 依賴於邏輯座標,可以是畫素點 公釐或程式設計師想要的其他尺度。視口 依賴於裝置座標 畫素點 1.windows都用下面兩個公式將視窗座標轉換成視口座標 xviewport xwindow xwinorg xviewext xwinext xvieworg yviewport ywindow y...

視口和視窗

對映方式指定了邏輯座標系的邏輯單位和座標軸正方向,座標原點沒有涉及。而且,在 自作主張的 兩種對映方式下,邏輯單位 座標軸正方向和座標原點都有待確定。視口 是基於裝置座標的,通常,視口與客戶區相同。點 0,0 是客戶區域的左上角。x 的值向右增加,y 的值向下增加。視窗 是基於邏輯座標的,邏輯座標可...

QT視口和視窗

視口和視窗實際上是同一區域 視口使用的是物理座標,而視窗使用的是邏輯座標,可以無視widget的放大和縮小 int w width int h height int side qmin w,h 去長和寬的小值 qrect rect w side 2 h side 2 side,side viewpo...