使用cs1graphics模块,我创建了一个包含4个Point对象的List。我想使用List对象中的Points绘制一个Polygon,方法是在每次迭代时(在for循环中)将List中的一个元素添加到Polygon参数中。列表中的Point对象需要在Polygon中叠加在一起才能绘制出整个东西。实际发生的是来自List中位置的Point对象将覆盖上一次迭代中的前一个对象。最后,我最终“绘制”一个点(即列表中的最后一个点)。我该如何解决这个问题?
编辑:我尝试使用.append但是将所有参数转换为List对象,显然我无法绘制列表。
self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400),Point(200,200)]
for i in range(4):
self._poly = Polygon(self._list[i],)
答案 0 :(得分:0)
两个
self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400),Point(200,200)]
self._poly = Polygon(self._list)
和
self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400),Point(200,200)]
self._poly = Polygon(*self._list)
会奏效。不需要循环。
如果您坚持在循环中逐步构建多边形,则可以执行以下操作:
self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400),Point(200,200)]
self._poly = Polygon()
for point in self._list:
self._poly.addPoint(point)
答案 1 :(得分:0)
只需传入列表本身,如下所示:
self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400)]
self._poly = Polygon(self._list)
最后一个点自动连接回第一个点以关闭多边形。
答案 2 :(得分:0)
我认为你想要的是:
self._poly = Polygon(*self._list)
*
将列表解压缩为参数,并将它们作为单独的参数传递给函数。
您也可以直接传递积分列表。
self._poly = Polygon(self._list)
它也会起作用。
答案 3 :(得分:0)
如果你想要一个前4个点的多边形:
self._poly = Polygon(* self._list [:4])
在您的代码中,您创建了4个多边形,每个多边形都有一个Point。