我定义的画曲线 并把曲线坐标转换成窗口坐标。painter->drawPolyline(polyline);
painter->drawPolyline(vPoint);
但是把他放到for 循环里面却可以绘图,当不是我要的效果 ,这是为什么? 新手求助。。
不起作用,这是为什么??
按书上的plotter 例子改写。
void test3::drawCurve(QPainter *painter)
{
painter->setPen(Qt::blue);
QRect rect(Margin,Margin,width()-2*Margin,height()-2*Margin);
if (!rect.isValid())
return;
painter->setClipRect(rect.adjusted(+1,+1,-1,-1));
while(q_count<1000)
{
++q_count;
double hN=50+qrand()%(height()-100-50);
//double rN=(50+400/(6*60*60*8.0))*q_count;
//double rN=50+q_count/8.0;
double rN=50+q_count;
frontPoint.setX(rN);
frontPoint.setY(hN);
vPoint.push_back(frontPoint);
//painter->drawPoint(frontPoint);
nextPoint.setX(frontPoint.x());
nextPoint.setY(frontPoint.y());
}
QPolygonF polyline(vPoint.count());
//QString st=""; vPoint.count()
for(int j=0;j<vPoint.count();++j)
{
double dx=vPoint[j].x()-minX;
double dy=vPoint[j].y()-minY;
double x=rect.left()+(dx*(rect.width()-1)/(maxX-minX));
double y=rect.top()+(dy*(rect.height()-1)/(maxY-minY));
polyline[j]=QPointF(x,y);
//QMessageBox::information(NULL,QString::number(vPoint[j].x()),QString::number(vPoint[j].y()), QMessageBox::Yes , QMessageBox::Yes);
vPoint[j]=QPointF(x,y);
//QMessageBox::information(NULL,"Title" , "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
// QMessageBox::information(NULL,QString::number(vPoint[j].x()),QString::number(vPoint[j].y()), QMessageBox::Yes , QMessageBox::Yes);
// painter->drawPolyline(polyline);
}
painter->drawPolyline(polyline);
painter->drawPolyline(vPoint);
// for(QVector<QPointF>::iterator iter=vPoint.begin()+1;iter!=vPoint.end(),i<5;++iter,++i)
//{
// painter->drawLine(*(iter-1),*iter);
// }
}
------解决方案--------------------
你想要什么效果呢?