我正在使用一个QGraphicsPolygonItem,我注意到它始终将终点与起点连接起来。QGraphicsPolygonItem绘制一个开放的(不封闭的)多边形
我知道多边形术语的意思正是这个意思,而我正在寻找的是“折线”或“多边形链”。我在QGraphicsItem子类中没有发现任何东西。
如何在QGraphics框架中绘制多边形链?是否有QGraphicsPolygonItem或类的属性呢?
我正在使用一个QGraphicsPolygonItem,我注意到它始终将终点与起点连接起来。QGraphicsPolygonItem绘制一个开放的(不封闭的)多边形
我知道多边形术语的意思正是这个意思,而我正在寻找的是“折线”或“多边形链”。我在QGraphicsItem子类中没有发现任何东西。
如何在QGraphics框架中绘制多边形链?是否有QGraphicsPolygonItem或类的属性呢?
您可以使用QPainterPath并使用lineTo方法输入yors多段线点,然后使用QGraphicsPathItem使其成为图形项目。
或者,您也可以考虑将几个QGraphicsLineItem组合到一个QGraphicsItemGroup中,但这更困难,因为您需要注意将线条对齐在一起。
这是你在找什么?
编辑:
QPainterPath显然闭合路径,那么你就只剩线的组。
EDIT2:
对不起,混淆你,但HostileFork似乎是正确的 - 你只需要使用QPainterPath并调用pathItem->setBrush(QBrush(Qt::transparent));
,让您的路径填充。
我有一个类似的问题,我通过使用QGraphicsPathItem类来解决它。在下面的代码,多边形是非封闭QPolygonF对象(即,开始点一个QPolygonF从其终点不同):
QPainterPath path = new QPainterPath();
path.addPolygon(polygon);
QGraphicsPathItem contour = new QGraphicsPathItem(path);
contour.setPen(new QPen(QColor.black));
当显示此QGraphicsPathItem对象,起始点是(理论上)与其终点断开。
对不起,这个示例代码是在Java中;但机制应该与C++中的相同。
QPainterPath不会自动关闭路径,因此使用lineTo和moveTo序列可能是最好的方法。你可能因为填充而感到困惑?如果你不想填充,你必须调用'pathItem-> setBrush(QBrush(Qt :: transparent));' – HostileFork