由工具生成了一个曲线数据,现在要把数据变成图片,所以写了个函数,数组坐标点是
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 "";
}
原来的曲线图:
还原的曲线图