MFC坐标问题
页面空间中的矩形被称为窗口,设备空间中的矩形被称为视口。
页面空间与设备空间的转换示意图:
页面空间到设备空间的转换需要两个矩形的宽高比(转换因子)。
设备空间到物理空间转换的唯一作用是平移,并由Windows的窗口管理部分控制。
几乎所有的GDI函数采用的坐标是逻辑坐标。windows必须将逻辑单位转换为设备单位,即像素。
Windows对所有的消息和非GDI函数采用设备坐标。
Windows默认的映射方式为MM_TEXT,它的逻辑单位和设备单位相同。SetMapMode函数可改变映射方式。
MM_TEXT模式下逻辑坐标与视口坐标间的转换:
通过鼠标等传递消息获得的坐标为设备坐标(视口坐标),以像素为单位,因此用MM_TEXT模式下,无需在两坐标系间进行转换。
改变窗口原点:
SetViewportOrg函数设置视口原点,SetWindowOrg函数设置窗口原点。