QPainter 是 Qt 框架中用于 2D 图形绘制的一个强大类,它提供了丰富的 API 来实现各种绘图操作。以下是对 QPainter 主要接口的归纳:
基本绘图操作
- 绘制点、线、曲线
drawPoint(const QPointF &point): 绘制一个点。drawPoints(const QPointF *points, int pointCount): 绘制多个点。drawLine(const QPointF &p1, const QPointF &p2): 绘制一条直线。drawLines(const QLineF *lines, int lineCount): 绘制多条直线。drawPolyline(const QPointF *points, int pointCount): 绘制一个折线(由直线段组成)。drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill): 绘制一个多边形。drawEllipse(const QRectF &rect): 绘制一个椭圆(如果矩形是正方形,则绘制一个圆)。drawArc(const QRectF &rect, int startAngle, int spanAngle): 绘制一个圆弧。drawChord(const QRectF &rect, int startAngle, int spanAngle): 绘制一个弦(圆弧与矩形相交的两点之间的线段)。drawPie(const QRectF &rect, int startAngle, int spanAngle): 绘制一个扇形(圆弧与两条半径围成的区域)。
- 绘制形状
drawRect(const QRectF &rect): 绘制一个矩形。drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize): 绘制一个圆角矩形。drawPath(const QPainterPath &path): 绘制一个复杂的路径(由直线段、曲线段组成)。
- 绘制文本
drawText(const QPointF &position, const QString &text): 在指定位置绘制文本。drawText(const QRectF &rectangle, int flags, const QString &text): 在指定矩形区域内按照指定标志绘制文本。boundingRect(const QRectF &rectangle, int flags, const QString &text): 返回在给定矩形内绘制文本所需的边界矩形。
图像与像素图绘制
- 绘制图像
drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect = QRectF(), Qt::ImageConversionFlags flags = Qt::AutoColor): 在目标矩形区域内绘制图像的一部分。drawImage(const QPoint &point, const QImage &image, const QRectF &sourceRect = QRectF(), Qt::ImageConversionFlags flags = Qt::AutoColor): 在指定位置绘制图像的一部分。
- 绘制像素图
drawPixmap(const QPointF &point, const QPixmap &pixmap): 在指定位置绘制一个像素图。drawPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QRectF &sourceRectangle = QRectF()): 在目标矩形区域内绘制像素图的一部分。
绘图属性设置
- 画笔(QPen)
setPen(const QPen &pen): 设置画笔属性,如颜色、宽度、线型等。
- 画刷(QBrush)
setBrush(const QBrush &brush): 设置画刷属性,如颜色、填充样式、渐变等。
- 字体(QFont)
setFont(const QFont &font): 设置字体属性,如字体样式、大小等。
渲染与变换
- 渲染质量
setRenderHint(QPainter::RenderHint hint, bool on = true): 启用或禁用指定的渲染提示,如抗锯齿、文本抗锯齿等。
- 坐标变换
translate(qreal dx, qreal dy): 平移坐标系统。rotate(qreal angle): 旋转坐标系统。scale(qreal sx, qreal sy): 缩放坐标系统。shear(qreal sh, qreal sv): 剪切坐标系统。
- 保存与恢复状态
save(): 保存当前绘图状态。restore(): 恢复之前保存的绘图状态。
其他功能
- 剪辑区域
setClipRect(const QRectF &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip): 设置剪辑区域。setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip): 设置剪辑路径。
- 透明度
setOpacity(qreal opacity): 设置全局透明度。
- 绘制模式
setCompositionMode(QPainter::CompositionMode mode): 设置图形合成模式。
使用建议
- 通常在控件的
paintEvent()方法中使用QPainter进行绘图,以确保绘图操作与 Qt 的绘制机制同步。 - 绘图前,应设置好
QPainter的各项属性(如画笔、画刷、字体等),以提高绘图效率和质量。 - 绘图完成后,记得销毁
QPainter对象或让其在局部作用域内自动销毁,以避免资源泄露。
这些接口提供了丰富的绘图功能,能够满足大多数 2D 图形绘制的需求。在实际开发中,可以根据具体需求选择合适的接口进行绘图操作。
3229

被折叠的 条评论
为什么被折叠?



