Intendo proprio la classe Raster in quanto creo immagini a partire da matrici e poi le devo visualizzare.inoltre ho bisogno di modificare l'immagine e quindi ho bisogno anche che l'operazione di visualizzazione sul jpanel sia pure veloce
Intendo proprio la classe Raster in quanto creo immagini a partire da matrici e poi le devo visualizzare.inoltre ho bisogno di modificare l'immagine e quindi ho bisogno anche che l'operazione di visualizzazione sul jpanel sia pure veloce
Quel Raster non dovrebbe neanche interessarti, visto che il suo uso è una cosa abbastanza "avanzata".
E ti ho anche ampiamente detto che in Java SE una immagine è solo rappresentata da java.awt.Image e sotto-tipi. Hai guardato BufferedImage?
La visualizzazione di un (Buffered)Image a livello "basilare" è banale l'ho detta prima: (Buffered)Image -> ImageIcon -> JLabel.
Ma se devi modificare frequentemente la immagine e rivisualizzarla oppure addirittura è l'utente che deve poter "disegnare" tramite tastiera/mouse sulla immagine, allora no, conviene usare il custom painting. E riguardo ottimizzazioni, performance e quant'altro, sono tutte cose che dovrai comprendere man mano che acquisisci i concetti sul painting in Swing. Non sono cose che posso spiegarti in poche righe!
Cerca di vedere i vari aspetti singolarmente e in modo progressivo. Mi sembra che stai facendo un po' un miscuglio ...
Se hai dubbi più precisi, chiedi pure, magari preferibilmente in discussioni separate.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Si è proprio quello che sto cercando di utilizzare, ma BufferedImage è formato da un oggetto Raster e da un ColorModel. Ora, io ho creato il BufferedImage, ma non riesco a capire come utilizzarlo per visualizzare la foto su un JPanel.Hai guardato BufferedImage?
Ma potresti anche ignorare questi aspetti. Un BufferedImage molto spesso lo si crea con il costruttore:
public BufferedImage(int width, int height, int imageType)
per cui alla fin fine ti basta specificare la dimensione e il tipo. I tipi più frequentemente utilizzati sono TYPE_INT_RGB oppure con canale alpha TYPE_INT_ARGB.
Il caso basilare l'ho già detto: l'uso di ImageIcon+JLabel. Ma questo va bene più che altro per immagini statiche o comunque che cambiano poco o dopo molto tempo.
Se vuoi avere più controllo, anche su coordinate, rotazione, ecc... della immagine, allora serve il custom painting: si estende tipicamente JPanel o JComponent (ci sono alcune differenze tecniche tra i due ma per cose del genere è sufficiente JPanel) e si ridefinisce (override) paintComponent(Graphics) e si disegna quello che si vuole, la immagine, sul Graphics.
Di esempi sul custom painting ne trovi a tonnellate .. anche tra i miei Java Examples.![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
D'accordo, ma in ogni caso questo BufferedImage dovrò riempirlo prima o poiMa potresti anche ignorare questi aspetti. Un BufferedImage molto spesso lo si crea con il costruttore:
public BufferedImage(int width, int height, int imageType)
per cui alla fin fine ti basta specificare la dimensione e il tipo. I tipi più frequentemente utilizzati sono TYPE_INT_RGB oppure con canale alpha TYPE_INT_ARGB.. Però se proprio devo estendere il JPanel con il Paint darò un'occhiata ai tuoi esempi
Per intanto grazie, se continuo a non riuscirci, ci risentiremo qui![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet