• 6331阅读
  • 4回复

请高手给看一下画图的代码错误出在哪里?急啊!!!! [复制链接]

上一主题 下一主题
离线man28
 

只看楼主 倒序阅读 楼主  发表于: 2006-06-12
请高手给看一下画图的代码错误出在哪里?急啊!!!!
void Plotter::refreshPixmap()
{
  int sw=cd.size()*10;
  int sh=(int)736*0.004*100;

  pixmap.resize(QSize(sw,sh));
  pixmap.fill(this,0,0);
  QPainter painter(&pixmap,this);
  painter.translate(0,-sh);
  drawCurve(&painter);
  update();
}

void Plotter::drawCurve(QPainter* painter)
{
          int oldCDP;
  map<int,CurveData>::const_iterator it=curveMap.begin();
  oldCDP=(*it).first;
  while(it!=curveMap.end());
  {

    int id=(*it).first;
    int trAxis=(id-oldCDP)*10;
    const CurveData& data=(*it).second;
    int numPoints=0;
    int maxPoints=data.size();
    QPointArray points(maxPoints);

    for(int i=0;i<maxPoints;i++)
    {
        double x=data*10;
        double y=-i*0.004*100;

        points[numPoints]=QPoint((int)x,(int)y);
        numPoints++;
    }

    //points.truncate(numPoints);
    painter->setPen("white");
    painter->drawPolyline(points);
    painter->translate(-trAxis,0);
    oldCDP=id;
    it++;
  }
}

void Plotter::paintEvent(QPaintEvent* event)
{
 
  QMemArray<QRect> rects=event->region().rects();
  for(int i=0;i<(int)rects.size();i++)
    bitBlt(this,rects.topLeft(),&pixmap,rects);
}
可以编译运行,就是不画图!程序没响应!本意是通过平移坐标,画出一道道的地震图!前面有个读数据的函数,读完数就调用refreshPixmap().急死了
[ 此贴被XChinux在2006-06-13 09:05重新编辑 ]
离线鹤啸九天
只看该作者 1楼 发表于: 2006-06-24
画地震数据挺简单的,看你跟我是同行哦,都是地球物理软件,在这儿就不细说了,有需要联系:QQ:188784781
msn:jh-liuyi@tom.com
离线qlong_008
只看该作者 2楼 发表于: 2008-06-19
同问。。。。
有谁可以答的吗?
离线qlong_008
只看该作者 3楼 发表于: 2008-06-19
有人能解答吗。给我邮箱一份qlong_008@163.com
离线xjcook

只看该作者 4楼 发表于: 2008-06-22
没大看懂
你在paintEvent中有没有再调用refreshPixmap?
如果有就死循环了,把refreshPixmap的update();删掉试试先。
快速回复
限100 字节
 
上一个 下一个