1. 坐标变换函数
QPainter 在窗口上绘图的默认坐标系统如下图所示,这是绘图设备的物理坐标
。
为了绘图的方便,QPainter 提供了一些坐标变换的功能,通过平移、旋转等坐标变换,得到一个逻辑坐标系统
,使用逻辑坐标系统在某些时候绘图更方便。坐标变换函数见表 8-5。
常用的坐标变换是平移、旋转和缩放,使用世界坐标变换矩阵也可以实现这些变换功能,但是需要单独定义一个QTransform 类的变量,对于QPainter 来说,简单的坐标变换使用QPainter自有的坐标变换函数就足够了。详细介绍及实例请参考对应章节。
2. 视口和窗口
绘图设备的物理坐标是基本的坐标系,通过 QPainter 的平移、旋转等变换可以得到更容易操作的逻辑坐标
。
为了实现更方便的坐标,QPainter 还提供了视口 (Viewport)
和窗口 (Window)
坐标系,通过QPainter 内部的坐标变换矩阵自动转换为绘图设备的物理坐标。
视口表示绘图设备的任意一个矩形区域的物理坐标,可以只选取物理坐标的一个矩形区域用于绘图。默认情况下,视口等于绘图设备的整个矩形区。
窗口与视口是同一个矩形,只不过是用逻辑坐标定义的坐标系。窗口可以直接定义矩形区的逻辑坐标范围。图 8-13 是对视口和窗口的图示说明。
图 8-13 左图中的矩形框代表绘图设备的物理大小和坐标范围,假设宽度为 300 像素,高度为200 像素。现在要取其中间的一个正方形区域作为视口,灰色的正方形就是视口,绘图设备的物理坐标中,视口的左上角坐标为(50,0),右下角坐标为(250,200)。定义此视口,可以使用 QPainter的 setViewport()函数。详细介绍及实例见对应章节。