绘制
QPainter提供高度优化函数为需要绘制的GUI程序完成大部分的绘制工作。它能绘制所有的图形,从简单的图元(像QPoint,QLine,QRect,QRegion和QPolygon)到复杂的图形(矢量图形)。在Qt中,矢量路径由QPainterPath类描绘。QPainterPath使用一个容器保存绘制的相关信息,包括要绘制的图像形状。
QpainterPath
绘制路径由一些直线和曲线组成。例如,矩形由线组成,椭圆由曲线组成。
对于普通的绘画操作,绘画路径的主要优点使复杂形状只需要创建一次;然后通过调用QPainter::drawPath()函数可以绘制很多次。
QPainterPath对象能用于填充,绘制轮廓和修剪图形。为了生成指定的绘制路径和可被填充的图形轮廓,可使用QPainterPathStroker类。
线条和轮廓图使用QPen绘制。笔可被定义某些特征,例如样式(例如,线类型),宽度,画刷,线的两端形状(圆形)。笔的画刷是一个QBrush对象,用于填充这只笔画的形状。此时QBrush定义了填充模式。QPainter也能绘制对齐文本和图像。
当绘制文本时,字体通过QFont类指定。Qt将通过设置的属性值使用指定的字体,如果没有匹配的字体存在,Qt将使用安装的最接近匹配字体。正在被使用的字体信息使用QFontInfo类来检索。另外,QFontMetrics可进行字体测量,QFontDatabase可获取底层窗口系统可用字体的相关信息。
QPainter正常情况下在"natural"坐标系统中做绘制操作,也可以通过QTransform类进行视图和全局的坐标转换。更多信息,可参见Qt的The Coordinate System文档,此文档描述了绘制的过程,例如,抗锯齿绘制。
Anti-Aliased Painting(抗锯齿绘制)
绘制时的像素显示由QPainter::Antialiasing显示标志控制。QPainter::RenderHint枚举类型可设置QPainter的某个标志,用来通知绘图引擎绘制出QPainter::RenderHint类型变量指定的图像特性。
如果引擎支持锯齿效果,QPainter::Antialiasing类型变量指定绘图引擎绘制图元的锯齿边缘,反之,则使用不同的颜色亮度绘制平滑的边缘。
Filling(填充)
图形形状可使用QBrush填充。画刷可定义其颜色和样式(例如填充模式)。
Qt中的任何颜色由QColor类表示,此类支持RGB,HSV(Hue:色调;Saturation:饱和度;brightness Value:亮度)和CMYK((cyan (C):青色; magenta (M):洋红; yellow (Y):黄色; and black (K):黑色)颜色模型。QColort还支持alpha混合轮廓描绘和填充(指定透明效果),并且QColor是平台和设备无关的(使用QColormap类将颜色映射到硬件)。更多相关信息可参见QColor类API文档。
当新建一个控件时,推荐使用控件上调色板的颜色,不要使用硬编码指定的颜色。Qt中所有的控件包含一个调色板,并使用它们的调色板绘制自身。一个控件的调色板由QPalette类描述,此类包含每个控件的颜色组合状态。
有效的填充模式由Qt::BrushStyle枚举类型设置。它包含了一些基本的模式,从颜色的均匀度到每一个细微的模式,各种线的组合,渐进填充和纹理密度。Qt提供了QGradient类实现自定义渐进填充,同时,纹理密度的模式使用QPixmap类来指定。
QGradient
QGradient类和QBrush类组合后实现渐进填充。
Qt目前支持三种渐进填充:在起点和终点间线性颜色填充;以一个焦点为起点,以围绕此焦点的圆形为终点,在期间放射状的颜色填充;围绕某中心点的圆锥形渐进颜色填充。