你做错了什么是你正在使用一种有效地填充路径的方法,产生一个形状。
您应该改用该void QPainter::strokePath(const QPainterPath & path, const QPen & pen)
方法,它只会绘制路径笔划。
诚然,“绘制路径”听起来确实有点模棱两可。QBrush
期望作为艺术画笔工作会变得更糟。我猜想出这些名字的是程序员,而不是艺术家。
编辑:如果您想要获得的是笔划/轮廓的“形状”或几何形状,即由 绘制的QPainter::strokePath()
,您可以生成它,QPainterPathStroker::createStroke(const QPainterPath & path)
然后使用QPainter::drawPath()
生成的路径,这将产生与QPainter::strokePath()
.
编辑 2:我终于明白了你的意图,哈哈。实际上可以通过使用子路径在单个画家路径中拥有“单独/单独的曲线”,即:
QPainter p(this);
QPainterPath p1(QPointF(10,10)), p2(QPointF(50,10)), p3;
p1.quadTo(QPointF(100,50), QPointF(100,200));
p2.quadTo(QPointF(150,50), QPointF(150,200));
p3.addPath(p1);
p3.addPath(p2);
p.strokePath(p3, QPen(Qt::black));
简单地moveTo()
似乎也有效:
QPainter p(this);
QPainterPath p1(QPointF(10,10));
p1.quadTo(QPointF(100,50), QPointF(100,200));
p1.moveTo(50, 10);
p1.quadTo(QPointF(150,50), QPointF(150,200));
p.strokePath(p1, QPen(Qt::black));
还有 tadaaa,一条路径中有多个单独的曲线:
似乎不仅视觉输出相同,两种方法也具有相同的数字路径元素。然而,正如评论中提到的,两条开放曲线的这些解决方案都没有真正产生形状。