Frage

Ich würde gerne ein plattformübergreifendes Zeichnungsprogramm erstellen. Die einzige Voraussetzung für das Schreiben meiner App ist, dass ich eine Pixelebene -Genauigkeit über die Leinwand habe. Zum Beispiel möchte ich meinen eigenen Algorithmus zum Zeichnen von Zeilen schreiben, anstatt mich auf jemanden zu verlassen. Ich möchte keine Form der Anti-Aliasing (wiederum ist eine Pixel-Ebene-Steuerung erforderlich). Ich möchte, dass die Benutzerinteraktionen auf dem Bildschirm schnell und reaktionsschnell sind (bis meine Fähigkeit, schnelle Algorithmen zu schreiben).

Idealerweise möchte ich dies in Python oder vielleicht Java als zweite Wahl schreiben. Die Fähigkeit, die endgültige App-plattformübergreifend leicht zu machen, ist ein Muss. Ich werde mich bei Bedarf an verschiedene API unter verschiedenen Betriebssystemen unterwerfen, solange ich eine Abstraktionsebene um sie herum schreiben kann. Irgendwelche Ideen?

Addendum: Ich brauche die Fähigkeit zu zeichnen auf dem Bildschirm. Zeichnen Sie zu einer Datei, die ich herausgefunden habe.

War es hilfreich?

Lösung

Ich habe gerade diese Woche einige Folien und Demo -Code für 2D -Grafiken mithilfe von OpenGL von Python mithilfe des Bibliothekspyglet zusammengestellt. Sie können meine Sachen hier sehen: http://tartley.com/?p=378

Es ist sehr schnell (relativ gesehen, für Python) habe ich es geschafft, ungefähr 1.000 unabhängig positionierte und orientierte Objekte zu bekommen, die sich um den Bildschirm bewegen, jeweils etwa 50 Eckpunkte.

Es ist sehr tragbar, der gesamte Code, den ich in dieser Umgebung geschrieben habe, funktioniert unter Windows und Linux und Mac (und sogar dunkle Umgebungen wie Pypy), ohne dass ich jemals darüber nachdenken muss.

Aktualisieren: Es gibt auch eine Reihe neuerer Beiträge zum gleichen Thema: http://tartley.com/?cat=27

Andere Tipps

Das Pyglet Die Bibliothek für Python entspricht möglicherweise Ihren Bedürfnissen. Sie können OpenGL verwenden, eine plattformübergreifende Grafik-API. Sie können Anti-Aliasing- und Erfassungsregionen des Bildschirms in einem Puffer oder einer Datei deaktivieren. Darüber hinaus können Sie die Ereignishandhabung, Ressourcenbelastung und Bildmanipulationssysteme verwenden. Sie können es wahrscheinlich auch in PIL (Python Image Library) und definitiv Cairo, eine beliebte plattformübergreifende Vektorgrafikbibliothek, zusammenhängen.

Ich erwähne Pyglet anstelle von reinem Pyopengl, weil Pyglet viele hässliche OpenGL -Sachen transparent ohne Anstrengung von Ihrer Seite behandelt.

Ein Freund und ich arbeiten derzeit an einem Zeichenprogramm mit Pyglet. Es gibt ein paar Macken - zum Beispiel ist OpenGL immer doppelt gepuffert auf OS X, also müssen wir alles zweimal, einmal für den aktuellen Rahmen und erneut für den anderen Rahmen zeichnen, da sie beim Auffrischen des Displays umgedreht werden. Sie können sich unseren aktuellen Fortschritt ansehen In diesem Subversion -Repository. (Splatterboard.py in Trunk ist die Datei, die Sie ausführen möchten.) Wenn Sie nicht mit SVN verwendet werden möchten, würde ich Ihnen gerne eine E -Mail an die neueste Quelle senden. Fühlen Sie sich frei, Code zu stehlen, wenn Sie ihn untersuchen.

Wenn die Sprachauswahl geöffnet ist, hat eine Flash -Datei, die mit Haxe erstellt wurde, möglicherweise einen Platz. Haxe ist kostenlos und eine vollständige, dynamische Programmiersprache. Dann gibt es den verwandten Neko, eine virtuelle Maschine (wie Javas, Ruby, Papagei ...), die auf Mac, Windows und Linux ausgeführt werden kann. In gewisser Weise eine neue verbesserte Form von Blitz, natürlich kann es Dinge zeichnen. http://haxe.org/

QT's Canvas Ein Qpainter ist sehr gut für diesen Job, wenn Sie C ++ verwenden möchten. Und es ist Cross -Plattform.

Es gibt eine Python -Bindung für QT, aber ich habe sie nie verwendet.

Was Java betrifft, und mit SWT ist die Manipulation einer Leinwand mit SWT etwas schwierig und langsam, sodass ich sie nicht empfehlen würde. Auf der anderen Seite ist Swing's Leinwand ziemlich gut und reaktionsschnell. Ich habe die AWT -Option noch nie benutzt, aber Sie möchten wahrscheinlich nicht dorthin gehen.

ich würde empfehlen wxpython

Es ist eine wunderschöne Kreuzplattform und Sie können pro Pixelsteuerung erhalten. Wenn Sie Ihre Meinung darüber ändern, können Sie es mit Bibliotheken wie Pyglet oder Agg verwenden.

Sie finden einige nützliche Beispiele für das, was Sie in den Dokumenten und Demos -Downloads versuchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top