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重新编辑 ]