zoukankan      html  css  js  c++  java
  • Qt画笔实现波形区域图

    参考文章:https://blog.csdn.net/yuxing55555/article/details/79752978

    效果图:

    void WareArea::paintEvent(QPaintEvent *event)
    {
        int height = this->height();
        static QList<QPointF> points = QList<QPointF>() << QPointF(0, 0) << QPointF(100, 200) << QPointF(200, 100)
                                                     << QPointF(300, 330) << QPointF(330, 400) << QPointF(350, 500);
    
    
        QPainter painter(this);
        painter.setRenderHint(QPainter::Antialiasing, true);
        //painter.setPen(QPen(Qt::black, 2));
        painter.setPen(Qt::NoPen);
        painter.setBrush(QBrush(Qt::blue, Qt::SolidPattern));
    
    
        QPainterPath path(points[0]);
        for (int i = 0; i < points.size() - 1; ++i)
        {
            // 贝赛尔曲线
            // 控制点的 x 坐标为 sp 与 ep 的 x 坐标和的一半
            // 第一个控制点 c1 的 y 坐标为起始点 sp 的 y 坐标
            // 第二个控制点 c2 的 y 坐标为结束点 ep 的 y 坐标
            QPointF sp = points[i];
            QPointF ep = points[i+1];
            QPointF c1 = QPointF((sp.x() + ep.x()) / 2, sp.y());
            QPointF c2 = QPointF((sp.x() + ep.x()) / 2, ep.y());
    
    
            path.moveTo(points[i].x(), height);
            path.lineTo(points[i]);
            path.cubicTo(c1, c2, ep);
            path.lineTo(points[i+1].x(), height);
            path.lineTo(points[i].x(), height);
    
    
    
    
        }
    
    
        painter.drawPath(path);
    
    
    }
  • 相关阅读:
    Intellij IDEA debug jar包
    diamond简介和使用
    dubbo配置指南
    dubbo简单配置与使用
    设计模式之策略模式
    悲观锁和乐观锁
    sql建表,建索引注意事项
    jvm 调优(2)垃圾回收算法
    jvm 调优(1)概念
    jvm 命令
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/10138118.html
Copyright © 2011-2022 走看看