绘制和填充#
绘制#
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目前支持三种类型的渐变填充:线性渐变在起点和终点之间插值颜色,径向渐变在焦点点和围绕它的圆形上的终点之间插值颜色,锥形渐变在中心点周围插值颜色。