2008-09-15 17 views
3

Je voudrais créer un programme de dessin multi-plateforme. La seule exigence pour écrire mon application est que j'ai une précision au niveau du pixel sur la toile. Par exemple, je veux écrire mon propre algorithme de dessin au trait plutôt que de compter sur quelqu'un d'autre. Je ne veux aucune forme d'anti-aliasing (encore, le contrôle de niveau de pixel est exigé.) Je voudrais que les interactions d'utilisateurs sur l'écran soient rapides et sensibles (en attendant ma capacité d'écrire des algorithmes rapides.)Rapide, API de dessin 2D de précision de pixel pour l'application graphique?

Idéalement, Je voudrais écrire ceci en Python, ou peut-être Java en second choix. La possibilité de rendre facilement l'application finale multi-plateforme est un must. Je me soumettrai à différentes API sur différents systèmes d'exploitation si nécessaire, à condition de pouvoir écrire une couche d'abstraction autour d'eux. Des idées?

addenda: J'ai besoin de pouvoir dessiner à l'écran. Expédier à un fichier que j'ai compris.

Répondre

3

J'ai juste cette semaine mis en place quelques diapositives et le code de démo pour faire des graphiques 2D en utilisant OpenGL à partir de python en utilisant la bibliothèque pyglet. Vous pouvez voir mes trucs ici: http://tartley.com/?p=378

C'est très rapide (relativement parlant, pour python) J'ai réussi à déplacer environ 1000 objets positionnés et orientés indépendamment se déplaçant autour de l'écran, chacun avec environ 50 sommets.

Il est très portable, tout le code que j'ai écrit dans cet environnement fonctionne sur Windows et Linux et Mac (et même des environnements obscurs comme Pypy) sans que j'aie à y penser.

Mise à jour: Il y a un tas de nouveaux messages sur le même sujet aussi: http://tartley.com/?cat=27

+0

Je réalise qu'il s'agit d'un ancien article, mais le lien est cassé. – enobrev

+0

Merci. Fixé maintenant –

0

QT Canvas un QPainter sont très bien pour ce travail si vous souhaitez utiliser C++. et c'est une plateforme croisée.

Il existe une liaison python pour QT mais je ne l'ai jamais utilisée. Comme pour Java, en utilisant SWT, la manipulation au niveau des pixels d'un canevas est quelque peu difficile et lente, donc je ne le recommanderais pas. D'un autre côté, Swing's Canvas est plutôt bon et réactif. Je n'ai jamais utilisé l'option AWT mais vous ne voulez probablement pas y aller.

2

La bibliothèque Pyglet pour Python pourrait convenir à vos besoins. Il vous permet d'utiliser OpenGL, une API graphique multiplateforme. Vous pouvez désactiver l'anti-aliasing et capturer des régions de l'écran dans un tampon ou un fichier. En outre, vous pouvez utiliser ses systèmes de gestion d'événements, de chargement de ressources et de manipulation d'images. Vous pouvez probablement aussi l'attacher dans PIL (Python Image Library), et certainement Cairo, une bibliothèque graphique vectorielle multi-plateforme populaire. Je mentionne Pyglet au lieu de PyOpenGL pur parce que Pyglet gère beaucoup d'affreuses choses OpenGL de manière transparente sans effort de votre part.

Un ami et moi travaillons actuellement sur un programme de dessin utilisant Pyglet. Il y a quelques bizarreries - par exemple, OpenGL est toujours à double buffer sur OS X, donc nous devons tout dessiner deux fois, une fois pour l'image courante et encore pour l'autre image, puisqu'elles sont retournées à chaque rafraîchissement de l'affichage. Vous pouvez regarder notre progression actuelle in this subversion repository. (Splatterboard.py dans le coffre est le fichier que vous voulez exécuter.) Si vous n'utilisez pas svn, je serais heureux de vous envoyer un .zip de la dernière source. N'hésitez pas à voler du code si vous le regardez.

0

je recommande wxPython

Il est la plate-forme magnifique croix et vous pouvez obtenir par le contrôle de pixel et si vous changez attention à cela, vous pouvez l'utiliser avec des bibliothèques telles que pyglet ou agg.

Vous trouverez des exemples utiles pour ce que vous essayez de faire dans le téléchargement de docs et de démos.

1

Si le choix de langue est ouvert, un fichier Flash créé avec Haxe peut avoir une place. Haxe est gratuit, et un langage de programmation complet et dynamique. Ensuite, il y a Neko, une machine virtuelle (comme Java, Ruby's, Parrot ...) qui fonctionne sous Mac, Windows et Linux. Étant en quelque sorte une nouvelle forme améliorée de Flash, naturellement il peut dessiner des choses. http://haxe.org/