1.一个GDI文字输出函数:
TextOut(hdc, x, y, psText, iLength);
2.windows定义了8中映像方式
上面函数中的x,y是坐标值,几乎所有的GDI函数中,这些坐标值所使用的均是逻辑单位,windows必须将逻辑单位转换为设备单位,即像素。这种转换是由映像方式、屏幕和视窗口的原点及范围所控制的。映像方式还指示着x轴及y轴的方向。
windows定义了8中映像方式:
映像方式 | 逻辑单位 | 增加值 |
x值 y值 | ||
MM_TEXT | 像素 | 右 下 |
MM_LOMETRIC | 0.1mm | 右 上 |
MM_HIMETRIC | 0.01mm | 右 上 |
MM_LOENGLISH | 0.01in | 右 上 |
MM_HIENGLISH | 0.001in | 右 上 |
MM_TWIPS | 1/1440 in | 右 上 |
MM_ISOTROPIC | 任意(x=y) | 可选 可选 |
MM_ANSISOTROPIC | 任意(x!=y) | 可选 可选 |
可以使用函数SetMapMode(hdc, imapMode)来设置映像方式。
3. windows对所有消息(如:WM_MOVE, WM_SIZE...)对所有非GDI函数,甚至对一些GDI函数,永远使用设备坐标。
4. 所有的设备坐标系均是以像素为单位,X轴上的值从左到右,Y方向由上到下。
5. 【屏幕坐标】当我们使用整个屏幕时,就根据屏幕坐标进行操作,屏幕的左上角为(0, 0)点。屏幕坐标用在WM_MOVE(对于非子窗口)以及下列Windows函数中:CreateWindow, MoveWindow,GetWindowPos,GetCursorPos,SetCursorPos,GetWindowRect以及WindowFromPoint等。
5.【全窗口坐标】以程序的整个窗口为基准,这种坐标很少用到。
6.【显示区域坐标】点(0,0)是显示区域的左上角。用函数ClientToScreen可以将显示区域坐标转换为屏幕坐标,反过来ScreenToClient。也可以使用GetWindowRect函数取得屏幕坐标下的整个窗口的位置和大小。