2012-10-04 50 views
4

我目前正在研究一個應用程序,該應用程序使用視頻投影儀創建類似於真實激光的效果。在Youtube here上可以看到我試圖存檔的一個非常好的例子。使用cairo在Python中繪製大量圓圈

基本上,應用程序需要繪製各種顏色的簡單移動形狀。我有一個非常複雜的設置,使用pycairo允許原語通過一組修改器來改變位置,縮放和旋轉。這允許很大的靈活性。

不幸的是pycairo在繪製虛線圓圈時似乎很慢。我試圖畫出30個這樣的圓圈:

# setup, transforms... 
# Example color-scheme: 
self._colors = [(0.0, 1.0, 0.0)] 
# drawing dashes one after another 
for count, color in enumerate(self._colors): 
    cr.set_dash(dash_len, self._dash_len * count) 
    cr.set_source_rgb(color[0], color[1], color[2]) 

    cr.arc(0, 0, self.radius(), 0, 2 * math.pi) 
    cr.stroke() 

整個事情看起來像this。使用Core2Duo時,無法在800x600上支持25fps。

有沒有更快的繪製圓圈的方法?質量不是真正的問題。

感謝您的幫助!

+1

你有沒有考慮繪製n-gons而不是圈子?應該更快,而且如果N足夠高,你就不會看到太多的差異。 – Junuxx

+1

你也可以嘗試關閉antialiasing等 – Qnan

+0

@Junuxx我試了20gons,他們的速度大致相同。你的想法看起來很有希望 @Qnan我的設置代碼中已經有一個'cr.set_tolerance(0.5)',還有更多嗎? – Delphinator

回答