圆形渐变由颜色组,圆心(x
c
,y
c
),半径 r 和焦点(x
f
,y
f
)定义。圆心和半径定义一
个圆,颜色从焦点开始扩散到周围,焦点可以是圆心也可以是圆内的任意一个
点。
圆锥渐变由圆心(x
c
,y
c
)和一个角度 a 定义。颜色从圆心开始像表的秒针一样扩
散。
我们已经提到了 QPainter 的画笔,刷子和字体设置。此外,QPainter 还有其
他一些设置影响图形和文字的绘制:
1. 背景刷子,当背景模式为 Qt::OpaqueMode(缺省值为
Qt::transparentMode)时,背景刷子用来填充几何图形,文字,和位图的背
景(在绘图刷子的下面)
2. 刷子的起点:刷子的起始绘制点,通常为控件的左上角。
3. 剪辑区域,剪辑区域为绘图设备上可以绘制的区域,在剪辑区域意外进行的绘
制是无效的。
4. 视口,窗口,世界坐标:这三个决定了 QPainter 的逻辑坐标映射到物理坐标
的方式。通常,逻辑坐标和物理坐标是重合的。坐标系统在下一节介绍。
5. 组合方式:组合方式决定绘制设备上新绘制的象素和已经存在的象素的影响方
式。缺省方式为覆盖式(source over),新象素画在已有元素的上面。只是
有限一个绘图设备支持组合方式的设置,将在本章后面介绍
在任何时候,我们可以调用 save()把 QPainter 当前的设置保存在一个内部栈
里,然后调用 restore()进行恢复。我们能够临时改变 QPainter 的一些设置,
然后恢复先前的值。
8-2 坐标变换(Painter Transformations)
在 QPainter 的初始坐标系统中,点(0,0)位于绘图设备的左上角。X 轴坐标向
右递增,y 轴向下递增,一个象素占据 1×1 的面积。
需要说明的一点是一个象素的中心位于坐标的一半处。例如,左上角位于点
(0,0)和点(1,1)之间区域的象素,它的中心位于(0.5,0.5)。如果我们使用
QPainter 绘制一个位置在(100,100)的象素,QPainter 会在每个坐标值上增
加 0.5,以坐标(100.5,100.5)为中心绘制这个象素。
一个需要注意的事情是,一个象素的中心位于象素坐标的“半象素”坐标。例如,
窗口左上角象素占据从点(0,0)到(1,1)的位置,它的中心位于(0.5,0.5)。如果
我们需要 QPainter 在点(100,100)的坐标处绘制另一个象素,QPainter 将会
在两个坐标轴方向偏移 0.5 个坐标点,即象素的中心点将会位于
(100.5,100.5)。
这个偏移看起来有些教条,但是实际上有这重要的作用。首先,在禁止消除锯
齿功能(缺省设置)时才进行 0.5 的偏移。如果许可了消除锯齿功能,
QPainter 会在(100,100)的位置绘制一个黑色的象素。事实是 QPainter 在
(99.5,99.5),(99.5,100.5),(100.5,99.0),(100.5,100.5)绘制亮灰色象