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);
    
    
    }
  • 相关阅读:
    UVA 10618 Tango Tango Insurrection
    UVA 10118 Free Candies
    HDU 1024 Max Sum Plus Plus
    POJ 1984 Navigation Nightmare
    CODEVS 3546 矩阵链乘法
    UVA 1625 Color Length
    UVA 1347 Tour
    UVA 437 The Tower of Babylon
    UVA 1622 Robot
    UVA127-"Accordian" Patience(模拟)
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/10138118.html
Copyright © 2011-2022 走看看