首页 > 解决方案 > QPainterPath 描边伪影

问题描述

我正在将 aQPainterPath与文本放在一起,然后我正在绘制它,首先是QPainter::strokePath,然后是QPainter::fillPath。但是,笔划会出现伪影,如图所示。我做错了什么/如何防止这种情况?我应该将其报告为错误吗? 例子

标签: qtqpainterqpainterpath

解决方案


我发现下面的代码没有使用strokePathand fillPath,而是在没有人工制品的情况下工作,并且渲染速度更快:

if(outlineEnabled) {
    p.setBrush(Qt::NoBrush);
    p.setPen(QPen(outlineColor, outlineWidth/scaleFactor, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
    for(const auto &polygon : path.toSubpathPolygons())
        p.drawPolygon(polygon, Qt::OddEvenFill);
}

p.setBrush(color);
p.setPen(Qt::NoPen);
for(const auto &polygon : path.toFillPolygons())
    p.drawPolygon(polygon, Qt::OddEvenFill);

推荐阅读