Seite 1 von 1

Grundlegendes Zeichen (QPainter)

Verfasst: Donnerstag 10. Dezember 2009, 19:13
von Qdeep
Hallo!

Ich muss zugeben, ich verstehe das Zeichnen in PyQt nicht. Ich habe so viel gelesen und soweit ich es verstanden habe, kann man nur im PaintEvent eines Widgets zeichnen.
Aber ich kann doch nicht alle Zeichenschritte, die sich während der Laufzeit ergeben, in das PaintEvent schreiben?
Folgende Situation:

Ich möchte auf einer Fläche (QImage) nach und nach Linien und Rechtecke hinzufügen lassen und sie auf Wunsch auch wieder entfernen/verschieben können, also irgendwo referenzieren.

Man soll z. B. über Buttons die gewünschte Form auswählen können und sie dann per Mausklick auf eine Stelle im QImage zeichen lassen.

Wie mache ich das?
Dankeschön im Voraus,
Qdeep

Verfasst: Donnerstag 10. Dezember 2009, 20:09
von Defnull
QImage ist ein simpler image Buffer, keine Multi-Layer Vektor Engine. Wenn du da was rein gemalt hast, ist es drin. Im Prinzip musst du bei jeder Änderung das gesammte Bild oder zumindest rechteckige Bereiche davon neu zeichnen. Um diese Tatsache herum musst du deine Applikation planen und designen.

Tipp am Rande: Wenn du dir um Performance sorgen machst und sehr viele Objekte hast, schau dir mal R-Trees an. Viel Spass ;)

Verfasst: Donnerstag 10. Dezember 2009, 20:20
von Qdeep
Was könnte ich denn als "Multi-Layer Vektor Engine" benutzen?

Eigentlich möchte ich nur Linien und Kästen auf eine Fläche zeichnen und immer verschieben/löschen können.

Verfasst: Donnerstag 10. Dezember 2009, 20:25
von lunar
Das hört sich für mich nach einer Aufgabe für das Graphics View Framework an. Erfahrung aber habe ich damit nicht.

Verfasst: Donnerstag 10. Dezember 2009, 20:30
von Qdeep
Das klingt nach dem, was ich gesucht habe, lunar. Danke, ich schau's mir an!

Verfasst: Donnerstag 10. Dezember 2009, 21:10
von numerix
Qdeep hat geschrieben:Eigentlich möchte ich nur Linien und Kästen auf eine Fläche zeichnen und immer verschieben/löschen können.
Für den Fall, dass du nicht auf Qt festgelegt bist: Mit Tkinter geht das prima.