計算機螢幕座標系

2021-07-09 07:38:30 字數 2238 閱讀 3075

常用的螢幕座標系有如下圖所示的兩種:

螢幕座標系和視窗客戶區座標系最明顯的區別在於座標原點,螢幕座標系的座標原點在

整個螢幕的左上角

,而視窗客戶區座標系的座標原點在視窗客戶區的左上角,通常這兩個點是不重合的。

一 裝置座標和邏輯座標

裝置座標(device coordinate)又稱為物理座標(physical coordinate),是指輸出裝置上的座標。通常將螢幕上的裝置座標稱為螢幕座標。裝置座標用物件距離視窗左上角的水平距離和垂直距離來指定物件的位置,是以畫素為單位來表示的,裝置座標的x軸向右為正,y軸向下為正,座標原點位於視窗的左上角。

邏輯座標(logical coordinate)是系統用作記錄的座標。在預設的模式(mm_text)下,邏輯座標的方向和單位與裝置座標的方向和單位相同,也是以畫素為單位來表示的,x軸向右為正,y軸向下為正,座標原點位於視窗的左上角。邏輯座標和裝置座標即使在預設模式下其數值也未必一致,除了在以下兩種情況下:

1. 視窗為非滾動視窗

2. 視窗為滾動視窗,但垂直滾動條位於滾動邊框的最上端,水平滾動條位於最左端,但如果移動了滾動條這兩種座標就不一致了。

在vc中滑鼠座標的座標位置用裝置座標表示,但所有gdi繪圖都用邏

座標表示,所以用滑鼠繪圖時,那麼必須將裝置座標轉換為邏輯座標,可以使用cdc 函式dptolp()將裝置座標轉化為邏輯座標,同樣可以用lptodp()將邏輯座標轉化為裝置座標。

1、clienttoscreen 函式:

這個函式的功能:該函式將指定點的使用者座標轉換成螢幕座標。

函式原型:bool clienttoscreen(hwnd hwnd,lppoint lppoint);

引數:hwnd :使用者區域用於轉換的視窗控制代碼。 注:第二個引數點的座標是相對於第乙個引數(視窗控制代碼)的視窗的座標,將此點轉換為螢幕座標,實際上是在此點視窗座標(相對於視窗左上角的座標)的基礎上加上此視窗左上角座標相對於螢幕左上角的座標值。

lppoint:指向乙個含有要轉換的使用者座標的結構的指標,如果函式呼叫成功,新螢幕座標複製到此結構。

返回值:如果函式呼叫成功,返回值為非零值,否則為零。

注釋:函式用螢幕座標取代point結構中的使用者座標,螢幕座標與螢幕左上角相關聯。

cwnd::clienttoscreen(lppoint lppoint)  (clienttoscreen(lprect lprect))實現的是同樣的效果,只不過是視窗控制代碼預設為呼叫此函式的視窗。

2、screentoclient 函式:

函式功能:該函式把螢幕上指定點的螢幕座標轉換成使用者座標。

函式原型:bool screentoclient(hwnd hwnd, lppoint lppoint);

引數:hwnd:指向視窗的控制代碼,此視窗的使用者空間將被用來轉換。 注:將此點相對於螢幕左上角的座標值轉換成相對於此視窗左上角的座標值。

lppoint:指向point結構指標,該結構含有要轉換的螢幕座標。

返回值:如果函式呼叫成功,返回值為非零值,否則為零。

windows nt:若想獲得更多錯誤資訊,請呼叫getlasterror函式。

注釋:該函式應用hwnd引數標識的視窗和point結構給定的螢幕座標來計算使用者座標,然後以使用者座標來替代螢幕座標,新座標是相對於指定視窗的領域的左上角。

cwnd::getclientrect(crect rect)  函式:

此函式得到的區域是相對於呼叫此函式的視窗指標所指向的視窗的客戶區域,座標點是相對於此視窗而言的。例如:在對話方塊中,如果是乙個子控制項呼叫此函式,那麼它得到的rect值左上角的點必定為(0,0),長寬必定與此控制項的客戶區長寬想等。如果是對話方塊自身呼叫此函式,rect是基類對話方塊客戶區域座標,並且rect左上角的點也必定是(0,0),長寬與此對話方塊的客戶區長寬相等。

注:api函式::getclientrect(hwnd hwnd,lprect lprect)實現同樣的效果

cwnd::getwindowrect(rect) 函式:

此函式得到的區域座標是相對於螢幕左上角而言,無論是對話方塊本身還是它的子控制項呼叫此函式得到的座標都是相對於螢幕而言。並且如果是對話方塊那麼它得到的是對話方塊整個視窗的區域座標。

注:api函式::getwindowrect(hwnd hwnd,lprect lprect)實現同樣的效果

螢幕座標系

三點定義乙個三角形。當我們在三維圖形學中談論 點 point 時,我們經常說 頂點 vertex 乙個頂點有三個座標 x,y和z。你可以用以下方式來想象這三個座標 x 在你的右方 y 在你的上方 z 是你背後的方向 是的,背後,而不是你的前方 這裡有乙個更形象的方法 使用右手定則 x 是你的拇指 y...

螢幕座標系

def onclickbutton print 顯示座標系 方法一 print f widget.x 視窗左上角橫座標 print f widget.y 視窗左上角縱座標 print f widget.width 客戶區寬度 print f widget.height 客戶區高度 print 顯示座...

螢幕座標系和視窗客戶區座標

螢幕座標系和視窗客戶區座標系最明顯的區別在於座標原點,螢幕座標系的座標原點在整個螢幕的左上角,而視窗客戶區座標系的座標原點在視窗客戶區的左上角,通常這兩個點是不重合的。一 裝置座標和邏輯座標 裝置座標 device coordinate 又稱為物理座標 physical coordinate 是指輸...