基于V C++的GDI 常用坐标系统及应用 在Windows 应用程序中,只要进行绘图,就要使用GDI 坐标系统
Windows 提供了几种映射方式,每一种映射都对应着一种坐标系
例如,绘制图形时,必须给出图形各个点在客户区的位置,其位置用x 和y两个坐标表示,x 表示横坐标,y表示纵坐标
在所有的GDI 绘制函数中,这些坐标使用的是一种“逻辑单位”
当GDI 函数将结果输出送到某个物理设备上时,Windows 将逻辑坐标转换成设备坐标(如屏幕或打印机的像素点)
本文讨论了图形环境中的各个映射模式,包括它们是什么,怎么工作的,以及它们真正的含义
一、基础知识 (一)逻辑坐标
逻辑坐标与设备无关,缺省地,一个逻辑单位等于设备中的一个象素
它是实现“所见即所得”的基础
例如,当程序员调用LineTo 函数绘制25
4mm(1 英 寸) 长的直线时,他只要使用合适的映射模式,那么就并不需要考虑输出的是何种设备
若设备是VGA 显示器,Windows 自动将其转化为 96 个像素点;若设备是一个300dpi 的激光打印机,Windows 自动将其转化为 300 个像素点
(二)设备坐标
图形输出时,Windows 将GDI 函数中指定的逻辑坐标映射为设备坐标,在所有的设备坐标系统中,单位以像素点为准,水平值从左到右增大(正方向向右),垂直值从上到下增大(正方向向下)
Windows 中包括以下 3 种设备坐标,以满足各种不同需要: 1、客户区域坐标,包括应用程序的客户区域,客户区域的左上角为(0, 0)
2、屏幕坐标,包括整个屏幕,屏幕的左上角为(0, 0)
屏幕坐标用在WM_MOVE 消息中(对于非子窗口)以及下面的Windows 函数中:CreateWindow 和MoveWindow(都对于非子窗口)、GetMessage、GetCursorPos、GetWindowR