gdi中的坐标映射问题
阿里
在我们进行绘图程序的开发时,不可避免地会遇到坐标映射的问题,而这恰恰是一个很伤脑筋、绕也绕不明白的问题。我就经常为此而一卡就是几个小时,恨得要命,终于有一天心一横,豁出一个周末的晚上,啃了所有找得到的资料,特别是那蝌蚪一般的msdn,发现了相关问题的冰山之一角,不过就这就已经有一种豁然开朗的感觉了,把它写出来还希望能够对受到同样问题困扰的各位看官有一点点帮助,同时也希望编程大侠们不要因为对这样一个简单的问题不屑一顾而见笑。
首先要明确的一点是,绘图语句中使用的坐标始终是逻辑空间的坐标值,而我们最终要绘制的目的地则是物理设备空间(physical device space)。
1.预备知识:gdi中所规定的四种坐标空间(或者叫坐标系)。
1.1 world坐标空间:引入world空间的目的是对图像进行平移、缩放、剪切等操作,其最大坐标范围为2^32个单位高,2^32个单位宽,初始状态时x轴正向向右,y轴正向向上。world坐标空间可以成为逻辑空间。
1.2 page坐标空间:当没有world空间时,它就是逻辑空间,而且这种情况是最普遍的。最大坐标范围为2^32个单位高,2^32个单位宽,初始状态时x轴正向向右,y轴正向向上。