我有一个QQuickPaintedItem
的儿童课,可以绘制一条大折线(> 100k点)。 QQuickPaintedItem::paint()
中使用了以下方法:
// the method being called in QQuickPaintedItem::paint()
void Plotter::drawCurves(QPainter *painter)
{
// ...
QLinkedList<QPointF> data = iterator.value();
QPolygonF polyline(data.count());
QPointF point;
int i = 0;
foreach (point, data)
polyline[i++] = transformToCoord(point);
QTime timer;
timer.start();
painter->drawPolyline(polyline);
qDebug() << timer.elapsed();
}
void Plotter::paint(QPainter *painter)
{
// ...
drawCurves(painter);
// ...
}
使用QPainter::drawPolyline()
绘制100k点大约需要120-170毫秒。方法QQuickPaintedItem::update()
经常调用,因此绘制折线会大大降低程序性能。
有没有办法加快QPainter::drawPolyline()
?