GDI绘图坐标系映射的理解
一. 坐标单位
Windows的GDI/GDI+的绘图函数绘制图形时使用的是逻辑坐标系, 逻辑坐标系的单位是逻辑单位. 例如: pDC->MoveTo(100, 300); 这里的100和300的单位就是逻辑单位, 我们可以这么说 100逻辑单位, 300逻辑单位, 我觉得"逻辑单位"这4个字又长又臭, 很绕口, 所以我喜欢这么叫 100 猪屎, 300猪屎. 那么pDC->MoveTo(100, 300);的意思就是pDC的在逻辑坐标的当前点移动到(100猪屎, 300猪屎)这个点.
设备坐标和设备单位: 例如屏幕或打印机的单位像素.
通常我们是使用GDI函数绘图, 然后在屏幕上显示. 但是逻辑坐标和设备坐标的单位不同, 逻辑坐标的单位是"猪屎", 而设备的坐标是"像素". 所以需要转换, 怎么转换? 例如2猪屎相当于屏幕的1像素, 那么这两个坐标系的转换当量是 2 猪屎/像素.
那么pDC->MoveTo(100, 200); 如果是在屏幕是绘图, 相当于移动到屏幕 (50像素, 100像素) 这个点的位置.
50像素 = 100猪屎 / 当量 = 100