2013-02-02 50 views
0

使用cs1graphics模塊,我做了一個包含4個Point對象的List。我想用列表對象中的點來繪製一個多邊形,每次迭代(在for循環中)都將List中的一個元素添加到Polygon參數中。列表中的Point對象需要在Polygon中彼此疊加以便繪製出整個事物。實際發生的情況是,List中位置的Point對象會覆蓋上一次迭代中的前一個對象。最後,我最終「繪製」一個點(即列表中的最後一個點)。我該如何解決?如何使用for循環添加參數元素?

編輯:我試過使用.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

'Polygon'對象接受哪些參數? – Amyth

+0

嘗試傳遞列表本身,而沒有像'self._poly = Polygon(self._list)'這樣的循環' – Amyth

回答

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) 
+0

前兩個是輝煌的。謝謝。我不知道你可以繪製列表中包含的點而不提取點作爲單獨的參數。 – Manuel

0

只需通過在列表本身,就像這樣:

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

請注意,您don't need the last point

最後一個點自動連接回第一個以關閉多邊形。

+0

這太棒了!謝謝! – Manuel

+0

@MannyKim如果這個(或任何其他)答案可以解決您的問題,請隨時[接受它](http://meta.stackexchange.com/a/5235/141962)。謝謝! – phihag

0

我想你想要的是這樣的:

self._poly = Polygon(*self._list) 

*解包列表轉換參數,並將這些作爲單獨的函數的自變量。

你也可以傳遞點本身的列表。

self._poly = Polygon(self._list) 

它也能正常工作。

+0

文檔說,你可以傳遞一個列表*或*作爲單獨的參數。 – Volatility

+0

糟糕,你是完全正確的。 – phihag

0

如果你要與第4點的多邊形:

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

在你的代碼創建每次4個多邊形與單點。

相關問題