当前位置: 代码迷 >> QT开发 >> QT 绘图 有关问题
  详细解决方案

QT 绘图 有关问题

热度:424   发布时间:2016-04-25 04:56:57.0
QT 绘图 问题
我定义的画曲线 并把曲线坐标转换成窗口坐标。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);
  // }
}

------解决方案--------------------
你想要什么效果呢?
  相关解决方案