Image anzeigen und bereich auswählen

Alles rund um die Programmierung mit Qt
Antworten
Aenni
Beiträge: 79
Registriert: 15. Juli 2010 22:29

Image anzeigen und bereich auswählen

Beitrag von Aenni »

Hallo zusammen,

ich suche einen Weg um einen Bereich eines Bildes "auszuschneiden". Das heisst ich lasse mir derzeit ein bild in einem GraphicsView anzeigen, und möchte nun mit der Maus einen bereich des Bildes "auswählen" und dann neu speichern.- idealerweise entsteht eine Art "Rechteck" durch Klicken und gedrückt halten und dann entsprechend ziehen um einen bereich auszuwählen... :)

leider bin ich derzeit recht ratlos wie ich so etwas realisieren könnte.
Per Sufu konnte ich leider nichts finden.

herzlichen Dank im Voraus.
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag von -=Freaky=- »

du kannst doch die mouse events (mouse press/move/release) implementieren, dazu paintEvent, falls das auswahlrechteck zeichnen moechtest.

beim mouse press im bildbereich (ggf. beschraenkt auf linke maustaste) merkst du dir, dass der user auswaehlen moechte, und an welchen punkt er geklickt hat.
im mouse move (wird afair standardmaessig nur aufgerufen, wenn auch eine taste gedrueckt ist, also musst du das nicht pruefen, sondern nur, welche taste genau) merkst du dir dann den punkt, an den die maus bewegt wurde.
und im mous release event (wieder nur bei entspr. taste natuerlich) weisst du, der user hat fertig ausgewaehlt. dann nimmst du dir deinen startpunkt und endpunkt, und weisst damit genau welchen bildausschnitt der user ausgewaehlt hat.
dann kannst du z.b. die pixel in dem entspr. rechteck aus dem ursprungsbild in ein neues kopieren und (groesser) anzeigen lassen, oder was du auch immer tun willst.

im paintEvent kannst du zuerst das anzuzeigende bild zeichnen, und danach (darueber), sofern die richtige maustaste zum auswaehlen gedrueckt ist, das rechteck zwischen der position, an der die maustaste gedrueckt wurde, und der aktuellen position zeichnen, dann sieht der user, was er auswaehlt.

ich hoffe so in der art meintest du das.
im graphics view musst du eventuell noch die mauspositionen auf dein image mappen (falls du mehrere items hast, oder das bild nicht genau das graphicsview ausfuellt), oder du benutzt direkt die mouse events vom bild item (QGraphicsPixmapItem oder so), falls das welche hat, hab das gerade nicht genau vor augen.
na jedenfalls ist das so der ansatz, der mir auf anhieb einfaellt.

gruesse
julian
Aenni
Beiträge: 79
Registriert: 15. Juli 2010 22:29

Beitrag von Aenni »

dank dir!
Antworten