2008-09-15 59 views
3

我很想創建一個跨平臺的繪圖程序。編寫我的應用程序的一個要求是,我在畫布上具有像素級精度。例如,我想寫自己的線條繪製算法,而不是依賴別人。我不希望任何形式的抗鋸齒(同樣需要像素級別的控制)。我希望屏幕上的用戶交互快速並且快速響應(等待我編寫快速算法的能力)。適用於圖形應用的快速Pixel Precision 2D繪圖API?

理想情況下,我想用Python編寫它,或者用Java編寫第二個選擇。輕鬆實現最終應用程序跨平臺的能力是必須的。如果有必要,我會在不同的操作系統上提交不同的API,只要我可以在它們周圍寫一個抽象層。有任何想法嗎?

編:我需要繪製的能力,屏幕上。繪製到我已經找到的文件。

回答

3

我就在這個星期把一些幻燈片和演示代碼做使用庫pyglet使用OpenGL從蟒蛇2D圖形。你可以在這裏看到我的東西:http://tartley.com/?p=378

這是非常快速的(相對來說,對於python)我已經成功地獲得了大約1,000個獨立定位和朝向物體在屏幕上移動,每個物體都有大約50個頂點。

這是非常便攜,所有我已經寫在這個環境中的代碼適用於Windows和Linux和Mac(甚至是模糊的環境中,如Pypy),而我永遠不必去想它。

更新:有一堆新的職位上的同一主題太:http://tartley.com/?cat=27

+0

我意識到這是一箇舊帖子,但鏈接已損壞。 – enobrev 2011-08-25 18:14:58

0

如果您想使用C++,QT的Canvas和QPainter對於這項工作非常有用。它是跨平臺的。

有一個用於QT的python綁定,但我從來沒有用過它。

至於Java的,使用SWT,一個帆布像素級別的操作有一定的困難和緩慢的,所以我不會推薦它。另一方面,Swing的畫布非常好,反應靈敏。我從來沒有使用AWT選項,但你可能不想去那裏。

2

用於Python的Pyglet庫可能適合您的需求。它可以讓你使用OpenGL,一個跨平臺的圖形API。您可以禁用消除鋸齒功能並將屏幕區域捕獲到緩衝區或文件。另外,您可以使用其事件處理,資源加載和圖像處理系統。您也可以將它與PIL(Python圖像庫)以及絕對開放的流行的跨平臺矢量圖形庫結合起來。

我提Pyglet,而不是純粹的PyOpenGL因爲Pyglet處理大量的醜陋的OpenGL的東西與你的一部分沒有努力透明。

我和一個朋友正在使用Pyglet進行繪圖程序。有一些怪癖 - 例如,OpenGL總是在OS X上進行雙緩衝,所以我們必須畫兩次,一次是當前幀,一次是其他幀,因爲只要顯示刷新,它們就會翻轉。你可以看看我們目前的進展in this subversion repository。 (trunk中的Splatterboard.py是你想運行的文件。)如果你沒有使用svn,我會很樂意給你發一封.zip的最新源代碼。如果你仔細觀察,可以隨意竊取代碼。

0

我會建議wxPython

這是美麗的跨平臺,你可以爲每個像素控制得到,如果你改變你的介意你可以將它與pyglet或agg等庫一起使用。

您可以在文檔和演示下載中找到一些有用的示例。

1

如果語言選擇是開放的,用Haxe創建的Flash文件可能有一個地方。 Haxe是免費的,並且是一個完整的動態編程語言。然後是相關的Neko,一個虛擬機(如Java,Ruby,Parrot ......)在Mac,Windows和Linux上運行。從某種意義上說,它是一種新的改進形式的Flash,自然可以吸引玩家。 http://haxe.org/