2012-07-27 128 views
0

我遇到這樣的代碼:屏幕座標和設備座標有什麼區別?

//handler for context menu element; to move an element 



void CRTS_SketcherView::OnElementMove()  
{  
     CClientDC aDC(this); 
OnPrepareDC(&aDC);      //Set up the device context 
GetCursorPos(&m_CursorPos);    //Get cursor position in screen coords 
ScreenToClient(&m_CursorPos);   //convert to client coords 
aDC.DPtoLP(&m_CursorPos);   //Convert to logical 

     // ...code to initialize the moving of a shape on screen 


} 

我知道光標是屏幕座標是它在屏幕上的位置,和客戶端座標是窗口的客戶區座標不管位置窗口。 但是什麼是設備座標?我唯一知道的是它們是以像素爲單位的,但它們如何連接到邏輯(客戶端)和屏幕座標?

回答

0

屏幕座標是設備座標,它們只是描述同一事物的兩種不同方式 - 您正在繪製的物理設備。

GDI可用於諸如打印機輸出之類的東西,但使用術語「屏幕座標」對此有點混淆。從技術上講,你應該在屏幕上使用'設備'的名字,但作爲它的一個常用設備,人們(和文檔)給它自己的名字。

想到這一切的方法是要認識到有兩個座標系統,一個是固定的(設備系統)和一個是相對的(客戶端系統)。

+0

該言論還表示,我們首先將座標從屏幕轉換爲客戶端,然後從客戶端座標轉換爲邏輯。但是不是邏輯座標和客戶座標相同嗎? – Ghost 2012-07-27 12:29:59