绘制和填充#
绘制#
QPainter
提供了高度优化的函数,可用于绘制大部分 GUI 程序所需的绘图。它可以绘制从简单的图形元(由 QPoint、QLine、QRect、QRegion
和 QPolygon
类表示)到复杂数据流路径等各种形状。在 Qt 中,向量路径由 QPainterPath
类表示。QPainterPath
为绘图操作提供一个容器,允许图形形状的构建和重用。
QPainterPath
绘图路径是一个由线和曲线组成的对象。例如,矩形由线组成,而椭圆由曲线组成。
绘图路径相比普通绘图操作的主要优势在于,复杂的形状只需要创建一次,然后可以通过调用
drawPath()
函数多次进行绘制。可以使用
QPainterPathStroker
类为给定的绘图路径生成可填充的轮廓。
线和轮廓使用 QPen
类绘制。笔是通过其样式(即其线型)、宽度、刷子、端点绘制方式(帽样式)以及两根相连线交汇处的绘制方式(连接样式)定义的。笔的刷是一个用于填充使用笔产生的笔画的 QBrush
对象,即 QBrush
类定义了填充图案。
QPainter
还可以绘制对齐的文本和位图。
在绘制文本时,使用 QFont
类指定字体。Qt 将使用具有指定属性的字体,如果不存在匹配的字体,Qt 将使用最接近的已安装字体。实际使用的字体属性可以通过使用 QFontInfo
类来获取。此外,QFontMetrics
类提供了字体度量信息,而QFontDatabase
类提供了底层窗口系统中可用字体的信息。
通常,QPainter
在“自然”坐标系中绘制,但它能够使用 QTransform
类执行视图和世界变换。有关更多信息,请参阅 坐标系 ,其中还描述了渲染过程,即逻辑表示和渲染像素之间的关系,以及抗锯齿绘制的优点。
抗锯齿绘制
当绘制时,像素渲染受控于
Antialiasing
渲染提示。使用RenderHint
枚举指定对QPainter
可能或可能不会遵守的标志。
Antialiasing
值表示如果可能,则引擎应启用抗锯齿功能,即通过使用不同的颜色强度来平滑边缘。
填充
使用 QBrush
类对形状进行填充。画刷由其颜色和其样式(即其填充模式)定义。
Qt 中的任何颜色都由 QColor
类表示,该类支持 RGB、HSV 和 CMYK 颜色模型。QColor
还支持带 Alpha 混合的轮廓和填充(指定透明效果),该类是平台和设备无关的(颜色通过 QColormap 类映射到硬件)。有关更多信息,请参阅 QColor
类文档。
可用的填充模式由Qt::BrushStyle枚举描述。这些包括从均匀颜色到非常稀疏的模式,各种线组合,渐变填充和纹理。Qt提供了QGradient
类来定义自定义渐变填充,而纹理模式使用QPixmap
类指定。
QGradient
QGradient
类与QBrush
类结合使用,用于指定渐变填充。Qt目前支持三种类型的渐变填充:线性渐变在起点和终点之间插值颜色,径向渐变在焦点点和围绕它的圆形上的终点之间插值颜色,锥形渐变在中心点周围插值颜色。