SWT Nebula Gallery - Bildbereiche zeichnen

paranoized

Mitglied
Hallo,

ich habe gerade erst damit begonnen mich mit Java und SWT zu beschäftigen und hänge im Moment an einem Problem fest.
Ich habe mir eine Nebula Gallery erstellt, und möchte mir in dieser nur Teilauschnitte von Bildern anzeigen lassen.
Das bedeutet ich übergebe der Gallery den Pfad eines Bildes sowie zwei Punkte, welche den zu zeichnenden Bereich des Bildes angeben. Leider habe ich keine Ahnung, wie dies zu bewerkstelligen ist und bin auch nirgendwo fündig geworden.
Ich habe zu diesem Thema bisher nur "Graphics Context" gefunden, was jedoch nicht mit der Nebula Gallery funktioniert.
 

paranoized

Mitglied
Habe eine mögliche Lösung gefunden. Man könnte es mit einem "BufferedImage" lösen, dieses müsste man jedoch noch von AWT zu SWT umwandeln, was mir jedoch etwas zu umständlich erscheint.
Fällt jemandem noch etwas anderes ein?
 

dzim

Top Contributor
Hm... Ich bin schon eine Weile raus aus SWT, aber bei mir klingelt da was bei BufferedImage - ich glaube es gab da wirklich beschränkungen, es sei denn du baust dir ein eigenes Widget.

Eine Alternative, da ich SWT für Programme mit "professionellem Look" (also mit nativer Oberfläche) für produktive Oberflächen durchaus schätze und dir nicht davon abraten möchte, wäre ein JavaFX-Panel zu embedden: hier der Link Dokumentation von Oracle. Der Vorteil, im Verlgeich, zu AWT/Swing ist, dass die Bridge ausgereift ist, du die Effekte von JavaFX verwenden kannst und - das ist vielleicht das wichtigste - du auf dem selben Thread arbeiten kannst, also kein Platform#invokeLater(Runnable), oder wie das bei Swing heisst, verwenden musst. Es kann dir also das beste beider Welten bieten. In JavaFX ist der ImageView und die Klasse Image wichtig.

PS: Da ich gerade verstärkt mit JavaFX arbeite, muss ich feststellen: Coole GUIs mit ordentlicher Performance und schellen Gimmicks wie Animationen und einfach mit CSS zu stylen! Aber mir fehlen die (meiner Meinung nach) tollen (sprich: besseren) Layouts von SWT (das GridLayout und das RelativeLayout sind flexibler, finde ich)!

Viel Erfolg!
 
Zuletzt bearbeitet:

paranoized

Mitglied
Danke für die Antwort, ich werde das auf alle Fälle mal ausprobieren. Ich habe in der Zwischenzeit eine relativ einfach Lösung gefunden.
Ich lade die Bilder als BufferedImage, und lasse mir mit "buffImage = buffImage.getSubimage(x,y,w,h)" den gewünschten Bereich anzeigen.
Dieses BufferedImage konvertiere ich mit einer Methode, die ich hier gefunden habe:
Convert between SWT Image and AWT BufferedImage : SWT Swing AWT*«*SWT JFace Eclipse*«*Java habe in eine SWT.Image.
 

Ähnliche Java Themen

Neue Themen


Oben