0

使用 cs1graphics 模块,我创建了一个包含 4 个点对象的列表。我想通过每次迭代(在 for 循环中)将 List 中的一个元素添加到 Polygon 参数来使用 List 对象中的 Points 绘制多边形。列表中的 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],)
4

4 回答 4

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)
于 2013-02-02T09:21:03.360 回答
0

只需传入列表本身,如下所示:

self._list = [Point(200,200),Point(400,200),Point(400,400),Point(200,400)]
self._poly = Polygon(self._list)

请注意,您不需要最后一点

最后一个点会自动连接回第一个点以闭合多边形。

于 2013-02-02T09:21:13.487 回答
0

我想你想要的是这样的:

self._poly = Polygon(*self._list)

*列表解包为参数,并将它们作为单独的参数传递给函数。

您也可以只传入点列表本身。

self._poly = Polygon(self._list)

它也可以正常工作。

于 2013-02-02T09:21:50.850 回答
0

如果你想要一个带有前 4 个点的多边形:

self._poly = 多边形(*self._list[:4])

在您的代码中,您正在创建 4 个多边形,每个多边形都有一个点。

于 2013-02-02T09:22:19.310 回答