Seite 1 von 1

schnelle Zeichenfläche (z.B. durch SDL) in wxPython

Verfasst: Mittwoch 10. Februar 2010, 16:05
von IoI
Hallo zusammen,

ich überlege gerade wie ich eine kleine CAD Anwendung schreiben würde. Dafür würde ich gerne als "Rahmen" wxPython nutzen und dann eine Zeichenebene dort einfügen. Da ich weiß, dass die mitgelieferten Funktionen zum Zeichnen wahrscheinlich schnell am Ende sind (z.B. beim zoomen, aber spätestens bei 3D), hatte ich überlegt, dass man besser SDL oder das darauf basierende pygame nimmt.

Bevor ich aber den falschen Weg einschlage wollte ich zum einen fragen, wie ihr so etwas realisieren würde und zum anderen wie man das dann in wxPython einbindet.

Verfasst: Mittwoch 10. Februar 2010, 17:13
von Dav1d

Re: schnelle Zeichenfläche (z.B. durch SDL) in wxPython

Verfasst: Mittwoch 10. Februar 2010, 17:29
von gerold
Hallo IoI!

Vielleicht interessant für dich: http://www.python-forum.de/topic-16675.html

mfg
Gerold
:-)

Verfasst: Mittwoch 10. Februar 2010, 20:05
von IoI
mmh,

ganz schlüssig bin ich mir jetzt noch nicht. Vor allem weil ich eventuell auch noch ein bissen 3D zeichnen will (später zumindest, vorwiegend 2D).

Zu pycairo müsste ich erstmal testen, wie es sich bei Funktionen wie Zoomen oder Verschieben verhält. Ich habe bis jetzt nur statische Codeschnippsel gefunden bis auf http://paste.pocoo.org/show/90972/ . Gut wäre etwas vergleichbares zu sehen (mit Zoomen, Verschieben, Elementauswahl usw.).

Danke aber schon mal soweit :D

Verfasst: Mittwoch 10. Februar 2010, 20:53
von Dav1d
Zu Cairo sind auch Beispiel in der wxPythonDemo

Verfasst: Donnerstag 11. Februar 2010, 09:55
von Rebecca
wxPython hat auch ein GLCanvas zum Einbinden von PyOpenGL. Ich hab's noch nie benutzt, aber ich wuerd's mir auf jeden Fall mal anschauen.

Verfasst: Dienstag 2. März 2010, 16:57
von IoI
Ich hab jetzt mal etwas mit Cairo aus probiert. Im Bild unten werden bei wx.EVT_PAINT 7600 Lines und 2601 Arcs gezeichnet. Wie man sich sicher vorstellen kann dauert es etwas bis das Bild aufgebaut ist. Zusätzlich habe ich noch wx.FULL_REPAINT_ON_RESIZE im Style des Panels, um bei Größenänderung ein angepasstes Bild zu bekommen.

Für Aktionen wie Zoomen oder Verschieben ändert sich ja grundsätzlich das dargestellt Bild nicht, gibt es eine effizientere Möglichkeit das auszunutzen? So ist mir noch zu langsam und Geschwindigkeit wäre das Hauptziel, um ein bestehendes System abzulösen.

Bild

EDIT:
Hier vielleicht nochmal ein kleineres Beispiel ;)
Bild