如何优化QPainter :: drawPolyline()

时间:2018-04-09 15:25:13

标签: c++ qt user-interface paint qpainter

我有一个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()

0 个答案:

没有答案