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 "";
}

原来的曲线图:

还原的曲线图

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值