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


}

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

4

1 回答 1

-1

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

GDI 可用于诸如打印机输出之类的事情,但为此使用术语“屏幕坐标”有点令人困惑。从技术上讲,您也应该为屏幕使用“设备”绰号,但由于它是一种常用的设备,人们(和文档)给它起了自己的名字。

思考这一切的方法是实现有两个坐标系,一个是固定的(设备系统),一个是相对的(客户端系统)。

于 2012-07-27T11:48:27.607 回答