高效地在QPainterPath周围绘制文本

时间:2019-04-02 09:51:32

标签: c++ qt qpainter qpainterpath

以下代码在QPainterPath周围绘制文本:

QString text = "Short text";
QPainterPath rawPath;
// fill path ...

while (...)
{
    double percent = ...;
    double angle = rawPath.angleAtPercent(percent);
    QPointF point = rawPath.pointAtPercent(percent);

    m_painter.save();

    m_painter.translate(point);
    m_painter.rotate(-angle);

    // Version 1:
    //m_painter.drawText(0, 0, text.at(currentChar));

    // Version 2:
    QPainterPath p2;
    p2.addText(0, 0, font, text.at(currentChar));
    m_painter.drawPath(p2);

    m_painter.restore();
}

图形结果符合预期,但是版本1和版本2的性能都非常差。瓶颈分别是QPainter::drawText()方法和QPainterPath::addText()方法。有没有更有效的方式在路径周围绘制文本?

此致

1 个答案:

答案 0 :(得分:1)

没有内置方法可以在路径后绘制文本。

但是,如果QPainter不够有效,则可以通过使用文本构建新路径并在循环后进行绘制来获得一些性能(您将不会使用QPainter::save()和{{1} }):

QPainter::restore()