1.坐标系分类
(1)设备坐标系 - 以像素为单位,以设备左上角为原点,X向右为正,Y向下为正的坐标系
屏幕坐标系:以当前屏幕左上角为原点的坐标系
窗口坐标系:以窗口左上角为原点的坐标系
客户区坐标系:以窗口的客户区左上角为原点的坐标系
(2)逻辑坐标系
在GDI绘图中,都是使用逻辑坐标系绘图,逻辑坐标系可以设置坐标系单位
2.坐标系映射
(1)映射模式
逻辑坐标系和设备坐标系单位之间映射关系:
设备坐标系的单位是由设备决定,大小固定。逻辑坐标系的单位可以通过程序设置。
int SetMapMode( HDC hdc, //DC句柄
int fnMapMode); //映射模式
成功,返回旧的映射模式
fnMapMode映射模式如下:
MM_TEXT - 一个逻辑单位=一个像素(操作系统默认),X轴右为正,Y轴下为正
MM_HIENGLISH - 一个逻辑单位=0.001英寸
MM_LOENGLISH - 一个逻辑单位=0.01英寸
MM_HIMETRIC - 一个逻辑单位=0.001毫米
MM_LOMETRIC - 一个逻辑单位=0.1毫米
MM_TWIPS - 一个逻辑单位=1/1440英寸(打印机常用)
以上五个模式,X轴右为正,Y轴上为正
自定义模式
MM_ISOTROPIC - 一个逻辑单位=自定义
MM_ANISOTROPIC - X轴的一个逻辑单位=自定义1,Y轴的一个逻辑单位=自定义2
X和Y轴的正方向也可以自定义
BOOL SetWindowExtEx( HDC hdc, //DC句柄
int nXExtent, //逻辑的X比例
int nYExtent, //逻辑的Y比例
LPSIZE lpSize); //返回原来的比例,一般为NULL
BOOL SetViewportExtEx( HDC hdc, //DC句柄
int nXExtent, //设备的X比例
int nYExtent, //设备的Y比例
LPSIZE lpSize); //返回原来的比例,一般为NULL