Drawing and Filling

Drawing

QPainter 提供高度优化的功能来完成大多数绘图 GUI 程序所需的功能. 它可以绘制从简单的图形基元 (如, QPoint, QLine, QRect, QRegion, QPolygon) 到矢量路径等复杂形状的所有内容. 在 Qt 中, 矢量路径由 QPainterPath 表示. QPainterPath 提供了一个用于绘画操作的容器, 使得图形形状能够被构造和重用.

QPainterPath

QPainterPath 是由直线和曲线组成的对象. 例如, 矩形由直线组成, 椭圆由曲线组成.

与普通绘图操作相比, QPainterPath 的主要优点是复杂的形状只需要创建一次; 然后调用 QPainter::drawPath() 函数可以进行多次绘制.

QPainterPath 对象可用于填充, 轮廓和剪切. 使用 QPainterPathStroker 为 QPainterPath 生成可填充的轮廓.

线条和轮廓使用 QPen 绘制. 笔由样式 (即. 线型), 宽度, 画笔, 端点的绘制方式 (帽式) 及两条连接线的绘制方式 (连接式) 定义. 画刷是一个 QBrush 对象, 用于填充笔划, 即. QBrush 定义填充样式.

QPainter 还可以绘制对齐的文本和像素图.

绘制文本时, 使用 QFont 指定字体. Qt 使用指定属性的字体, 或者如果不存在匹配的字体, Qt 使用最接近的匹配字体的已安装字体. 使用 QFontInfo 检索实际使用的字体属性. 此外, QFontMetrics 提供字体测量, QFontDatabase 提供底层窗口系统中可用的字体信息.

通常, QPainter 在 "自然" 坐标系中绘制, 但它可以使用 QTransform 执行视图和世界变换. 详见 Coordinate System, 它还描述了渲染过程, 即. 逻辑表示和渲染像素之间的关系, 及抗锯齿绘制的优势.

Anti-Aliased Painting

绘制时, 像素渲染由 QPainter::Antialiasing 渲染标识控制. QPainter::RenderHint 枚举指定 QPainter 标志, 绘制引擎决定是否使用这些标志.

QPainter::Antialiasing 指示绘制引擎应该在可能的情况下对基元的边缘执行抗锯齿处理, 即. 使用不同的颜色强度平滑边缘.

填充

使用 QBrush 填充形状. 画刷由颜色和样式 (即. 填充图案) 定义.

Qt 中的任何颜色使用 QColor 表示, 这个类支持 RGB, HSV 和 CMYK 颜色模型. QColor 还支持 alpha 混合轮廓和填充 (透明效果), 且这个类与平台和设备无关 (使用 QColormap 将颜色映射到硬件). 详见 QColor.

可用的填充模式由 Qt::BrushStyle 描述. 包括颜色, 基本图案, 线条组合, 渐变填充和纹理. Qt 提供 QGradient 类, 自定义渐变填充, 而纹理图案使用 QPixmap 定义.

QGradient

QGradientQBrush 组合定义渐变填充.

目前, Qt 支持三种渐变填充: 线性渐变(起点和终点之间插值), 径向渐变(焦点和圆周围上的终点之间插值), 圆锥渐变(中心点周围插值).