前段时间自己在研究
Windows
的
GDI
(图形设备接口)编程。刚开始时被其中的坐标映射方式搞得晕头转向,后来经过反复实践终于恍然大悟有所启迪,现总结如下,以避免朋友们遇到此类问题走弯路。
Windows
的
GDI
支持两种坐标系,即逻辑坐标系和物理设备坐标系。必须明确逻辑坐标系对应于平时所说的窗口(
Window
),而设备坐标系才对应视口 (
Viewport
)。
Ondraw
中的
CDC
类所有的绘图方法都是基于逻辑坐标而言的,
GDI
通过映射模式将逻辑窗口中的图形输出到物理设备上来的。
由逻辑窗口到物理视口的映射过程我们可以这样理解:我们在窗口坐标系(一般是
X
轴向右递增,
Y
轴向上递增,即与笛卡尔坐标系一致,而坐标单位是用户自定义的)上绘图,然后要在视口坐标系(一般坐标原点在屏幕视图的左上角,
X
轴向右递增,
Y
轴向下为正方向)下显示,坐标映射方式则规定了窗口和视口的范围,各轴的相对方向、原点或缩放比例等。
对这种映射简单打个比方,如图
1
,假如我们设定某种映射方式后,规定窗口坐标系的
Y
轴向上为正方向,视口坐标系的
Y
轴方向相反,视口坐标系的原点位于窗口坐标系中的(