【QT开发笔记-基础篇】| 第五章 绘图QPainter | 5.11 路径

本节对应的视频讲解:B_站_视_频

https://www.bilibili.com/video/BV1h24y1D7Gg
在这里插入图片描述


本节讲解如何绘制路径

1. 相关的 API

// 直接指定一个 QPainterPath 对象
void drawPath(const QPainterPath &path)

drawPath 需要一个 QPainterPath 对象,其常用方法

// 移动到指定的点,开始指定路径
void moveTo(const QPointF &point);
void moveTo(qreal x, qreal y);

// 以直线的方式,路径到指定的点
void lineTo(const QPointF &endPoint);
void lineTo(qreal x, qreal y);

// 以贝瑟尔曲线的方式,路径到指定的点
// 具体来说:使用控制点c1和c2,在当前点和结束点之间,绘制一条贝瑟尔曲线
void cubicTo(const QPointF &c1, const QPointF &c2, const QPointF &endPoint);
void cubicTo(qreal c1X, qreal c1Y, qreal c2X, qreal c2Y, qreal endPointX, qreal endPointY);

贝瑟尔曲线,常用于速度、动画等的控制,这不是我们的重点

关于贝瑟尔曲线的动态演示,可以查看这里:http://yisibl.github.io/cubic-bezier


2. 具体实现

只需在 PaintWidget.cpppaintEvent 中添加如下代码即可:

#include <QPainterPath>

void PaintWidget::paintEvent(QPaintEvent *event)
{
    QPainterPath path;
    path.moveTo(20, 80);
    path.lineTo(20, 30);
    // path.cubicTo(80, 0, 50, 50, 80, 80);
    path.cubicTo(QPoint(80, 0), QPoint(50, 50), QPoint(80, 80));

    for ( int x = 0; x < width(); x += 100 ) {
        for ( int y = 0; y < height(); y += 100 ) {
            
            ...
                
            switch ( mShape ) {
                // 路径
                case _Path:
                    painter.drawPath(path);
                    break;
            }
            ...  
        }
    }
}

最终绘制的路径的效果,如下:

image-20221209172711305

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大轮明王讲QT

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值