我遇到过这段代码:
//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 :(得分:0)
屏幕坐标是设备坐标,它们只是描述同一事物的两种不同方式 - 您正在绘制的物理设备。
GDI可以用于打印机输出之类的东西,但是使用术语“屏幕坐标”这有点令人困惑。从技术上讲,你也应该在屏幕上使用'device'名字对象,但是作为一个常用的设备,人们(和文档)给它自己的名字。
想到这一切的方法是要意识到有2个坐标系统,一个是固定的(设备系统),一个是相对的(客户系统)。