绘图和填充

绘图

QPainter 提供高度优化的函数来执行大多数 GUI 程序所需的绘图工作。它可以绘制从简单的图形原语(由 QPointQLineQRectQRegionQPolygon 类表示)到复杂形状如矢量路径的任何内容。在 Qt 中,矢量路径由 QPainterPath 类表示。 QPainterPath 提供了绘画操作的容器,允许图形形状被构建和重用。

QPainterPath

绘图路径是由线和曲线组成的对象。例如,矩形由线条组成,而椭圆由曲线组成。

与常规绘图操作相比,绘图路径的主要优势是复杂形状只需要创建一次;然后可以通过调用 QPainter::drawPath() 函数多次绘制。

QPainterPath 对象可用于填充、轮廓和裁剪。要生成给定绘图路径的可填充轮廓,请使用 QPainterPathStroker 类。

线和轮廓使用 QPen 类绘制。笔的定义由其样式(即其线型)、宽度、画笔以及端点绘制方式(帽样式)以及两根连接线之间的连接方式(连接样式)决定。笔的画笔是一个 QBrush 对象,用于填充由笔生成的划痕,即 QBrush 类定义填充图案。

QPainter 还可以绘制对齐文本和位图。

在绘制文本时,使用 QFont 类指定字体。Qt 将使用具有指定属性的自定义字体,如果不存在匹配的字体系统,Qt 将使用最接近的已安装字体。实际使用的字体的属性可以通过 QFontInfo 类检索。此外,QFontMetrics 类提供字体大小度量,QFontDatabase 类提供有关底层窗口系统中可用的字体的信息。

通常,QPainter 在“自然”坐标系中绘制,但它能够使用 QTransform 类执行视图和世界变换。更多信息请参阅 坐标系,其中还描述了渲染过程,即逻辑表示与渲染像素之间的关系以及抗锯齿绘制的优势。

抗锯齿绘图

在绘图时,像素渲染由QPainter::Antialiasing渲染提示控制。该QPainter::RenderHint枚举用于指定对QPainter可能被尊重或不被尊重的标志。

QPainter::Antialiasing值表示引擎应在可能的情况下消除原图素边缘的锯齿,即通过使用不同的颜色强度来平滑边缘。

填充

形状使用QBrush类填充。画笔由其颜色和其样式(即其填充模式)定义。

Qt中的任何颜色都由QColor类表示,它支持RGB、HSV和CMYK颜色模型。QColor还支持alpha混合轮廓和填充(指定透明效果),并且该类是平台和设备无关的(颜色通过QColormap类映射到硬件)。有关更多信息,请参阅QColor类文档。

可用的填充模式由Qt::BrushStyle枚举描述。这包括从均匀颜色到非常稀疏模式的基本模式,各种线组合,渐变填充和纹理。Qt提供QGradient类以定义自定义渐变填充,纹理模式使用QPixmap类指定。

QGradient

QGradient类用于与QBrush一起指定渐变填充。

Qt当前支持三种类型的渐变填充:线性渐变在起点和终点之间插值颜色,辐射渐变在焦点与其周围圆上的终点之间插值颜色,锥形渐变在中心点周围插值颜色。

© 2024 Qt公司。在此处包含的文档贡献是各自所有者的版权。提供的文档受GNU自由文档许可证版本1.3的条款约束,由自由软件基金会发布。Qt及其相关标志是芬兰的Qt公司和/或其他国家的商标。所有其他商标均为各自所有者的财产。