【发布时间】:2021-11-16 21:56:54
【问题描述】:
我正在尝试使用 PySide2 和 PyQtGraph 的组合创建史密斯圆图画布。
如上一个问题 (Pyqtgraph clip line) 中所述,执行此操作的最佳方法似乎是使用QGraphicsEllipseItem 绘制外圆,使用QGraphicsPathItem 和QPainterPath 绘制所有内弧,然后将它们添加到外圈并使用ItemClipsChildrenToParent 夹住它们。
这是我的代码:
rline = [0.2, 0.5, 1.0, 2.0, 5.0]
xline = [0.2, 0.5, 1, 2, 5]
circle1 = QGraphicsEllipseItem(-1, -1, 2, 2)
circle1.setPen(mkPen('b', width=0.5))
circle1.setFlag(circle1.ItemClipsChildrenToShape)
pathItem = QGraphicsPathItem()
path = QPainterPath()
path.moveTo(1, 0)
for r in rline:
raggio = 1./(1+r)
path.addEllipse(1, -raggio, -raggio*2, raggio*2)
for x in xline:
path.arcTo(1-x, 0, x*2, x*2, 90, 180)
path.moveTo(1, 0)
path.arcTo(1-x, 0, x*2, -x*2, 90, 180)
pathItem.setPath(path)
pathItem.setPen(mkPen('b', width = 0.5))
pathItem.setParentItem(circle1)
如下图所示,我的代码似乎大部分都在工作。
问题是内圆弧并没有完全被外圆约束。我原以为剪裁应该是绝对的,这样孩子们就不能在父母的界限之外画画,但也许不是这样?
【问题讨论】: