qt 数组坐标转成曲线图

由工具生成了一个曲线数据,现在要把数据变成图片,所以写了个函数,数组坐标点是

 QList<QPointF> m_vecData;

读数据的数据已经省掉了,自己写吧

std::string xxxxxxxx::GetDataImage()
{
    if(m_vecData.size()>0)
    {
        //QSize iconSize(1000, 500);
        QSize iconSizeImage(1061, 623);
        QPixmap pix(iconSizeImage);
        pix.fill(QColor(86, 86, 86));
        {
            QPainter painter(&pix);
            painter.setPen(Qt::green);
            float yMM = max(abs(m_max_y),abs(m_min_y))*2;
            if(yMM==0)
                yMM = 1;
            QVector<QPointF> vecPoints;
            {
                float nyRobitMin = -(m_vecData[0].y()/yMM*iconSizeImage.height()/2)+iconSizeImage.height()/2;

                vecPoints.append(QPointF(0.f, ( nyRobitMin) /  iconSizeImage.height()/2));
                for (float i = 0; i < m_vecData.size(); i ++)
                {
                    float nyCurrentRobitMin = -(m_vecData[i].y()/yMM*iconSizeImage.height()/2)+iconSizeImage.height()/2;
                    QPointF p(i*(float)iconSizeImage.width()/(float)m_vecData.size(), nyCurrentRobitMin);
                    vecPoints.append(p);
                    vecPoints.append(p);
                    qDebug("curveline x = %f,y = %f",i*(float)iconSizeImage.width()/(float)m_vecData.size(),nyCurrentRobitMin);
                }
                float nyRobitMax = -(m_vecData[m_vecData.size()-1].y()/yMM*iconSizeImage.height()/2)+iconSizeImage.height()/2;
                vecPoints.append(QPointF(1.f*iconSizeImage.width(),nyRobitMax));
            }
            painter.drawLines(vecPoints);
            painter.end();
        }
        string strImageUrl = "E:/CurveTestData/temp.png";
        pix.save(strImageUrl.c_str());
        return strImageUrl;
    }

    return "";
}

原来的曲线图:

还原的曲线图

 

扫描二维码关注公众号,回复: 17175978 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_30377315/article/details/126955882
今日推荐