屏幕坐标和设备坐标之间有什么区别?

时间:2012-07-27 11:29:20

标签: c++ mfc coordinates cursor-position

我遇到过这段代码:

//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


}

我知道光标的屏幕坐标是它在屏幕上的位置,而客户端坐标是窗口客户区域中的坐标,无论窗口的位置如何。       但那么设备坐标是什么?我唯一知道的是它们是像素 - 但它们如何连接到逻辑(客户端)和屏幕坐标?

1 个答案:

答案 0 :(得分:0)

屏幕坐标是设备坐标,它们只是描述同一事物的两种不同方式 - 您正在绘制的物理设备。

GDI可以用于打印机输出之类的东西,但是使用术语“屏幕坐标”这有点令人困惑。从技术上讲,你也应该在屏幕上使用'device'名字对象,但是作为一个常用的设备,人们(和文档)给它自己的名字。

想到这一切的方法是要意识到有2个坐标系统,一个是固定的(设备系统),一个是相对的(客户系统)。