Seite 1 von 1
Image anzeigen und bereich auswählen
Verfasst: 9. Juni 2011 10:39
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.
Verfasst: 9. Juni 2011 13:26
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
Verfasst: 10. Juni 2011 15:06
von Aenni
dank dir!