1. 程式人生 > >MFC中關於裝置(螢幕)座標和邏輯座標

MFC中關於裝置(螢幕)座標和邏輯座標

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

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

  1. 視窗為非滾動視窗

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

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

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

  
ScreenToClient和ClientToScreen實際上是轉換一個參照物的概念,如ie客戶區上一個button,相對於ie的座標是(x, y),ie客戶區相對於螢幕原點的座標是(x0 , y0),那麼button的screen座標就是(x+x0, y+y0)

ScreenToClient和ClientToScreen都假定座標是裝置座標。