绘图和填充¶
绘图¶
QPainter 提供了高度优化的函数,用于执行大多数图形用户界面程序所需的绘图操作。它可以绘制从简单的图形基元(由 QPoint、QLine、QRect、QRegion 和 QPolygon 类表示)到复杂形状(如矢量路径)的所有内容。在 Qt 中,矢量路径由 QPainterPath 类表示。QPainterPath 提供了一个用于绘图操作的容器,使得图形形状可以被构建和重用。
![]()
QPainterPath
画家路径是由线条和曲线组成的对象。例如,矩形由线条组成,椭圆由曲线组成。
与普通绘图操作相比,画家路径的主要优势是复杂的形状只需要创建一次;然后可以通过调用
drawPath()函数多次绘制。
QPainterPath对象可以用于填充、描边和裁剪。要为给定的画家路径生成可填充的轮廓,请使用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类指定。