QPainter的接口

QPainter 是 Qt 框架中用于 2D 图形绘制的一个强大类,它提供了丰富的 API 来实现各种绘图操作。以下是对 QPainter 主要接口的归纳:

基本绘图操作

  1. 绘制点、线、曲线
    • 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): 绘制一个扇形(圆弧与两条半径围成的区域)。
  2. 绘制形状
    • drawRect(const QRectF &rect): 绘制一个矩形。
    • drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize): 绘制一个圆角矩形。
    • drawPath(const QPainterPath &path): 绘制一个复杂的路径(由直线段、曲线段组成)。
  3. 绘制文本
    • 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): 返回在给定矩形内绘制文本所需的边界矩形。

图像与像素图绘制

  1. 绘制图像
    • 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): 在指定位置绘制图像的一部分。
  2. 绘制像素图
    • drawPixmap(const QPointF &point, const QPixmap &pixmap): 在指定位置绘制一个像素图。
    • drawPixmap(const QRectF &rectangle, const QPixmap &pixmap, const QRectF &sourceRectangle = QRectF()): 在目标矩形区域内绘制像素图的一部分。

绘图属性设置

  1. 画笔(QPen)
    • setPen(const QPen &pen): 设置画笔属性,如颜色、宽度、线型等。
  2. 画刷(QBrush)
    • setBrush(const QBrush &brush): 设置画刷属性,如颜色、填充样式、渐变等。
  3. 字体(QFont)
    • setFont(const QFont &font): 设置字体属性,如字体样式、大小等。

渲染与变换

  1. 渲染质量
    • setRenderHint(QPainter::RenderHint hint, bool on = true): 启用或禁用指定的渲染提示,如抗锯齿、文本抗锯齿等。
  2. 坐标变换
    • translate(qreal dx, qreal dy): 平移坐标系统。
    • rotate(qreal angle): 旋转坐标系统。
    • scale(qreal sx, qreal sy): 缩放坐标系统。
    • shear(qreal sh, qreal sv): 剪切坐标系统。
  3. 保存与恢复状态
    • save(): 保存当前绘图状态。
    • restore(): 恢复之前保存的绘图状态。

其他功能

  1. 剪辑区域
    • setClipRect(const QRectF &rectangle, Qt::ClipOperation operation = Qt::ReplaceClip): 设置剪辑区域。
    • setClipPath(const QPainterPath &path, Qt::ClipOperation operation = Qt::ReplaceClip): 设置剪辑路径。
  2. 透明度
    • setOpacity(qreal opacity): 设置全局透明度。
  3. 绘制模式
    • setCompositionMode(QPainter::CompositionMode mode): 设置图形合成模式。

使用建议

  • 通常在控件的 paintEvent() 方法中使用 QPainter 进行绘图,以确保绘图操作与 Qt 的绘制机制同步。
  • 绘图前,应设置好 QPainter 的各项属性(如画笔、画刷、字体等),以提高绘图效率和质量。
  • 绘图完成后,记得销毁 QPainter 对象或让其在局部作用域内自动销毁,以避免资源泄露。

这些接口提供了丰富的绘图功能,能够满足大多数 2D 图形绘制的需求。在实际开发中,可以根据具体需求选择合适的接口进行绘图操作。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值