Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
senza che copiate e incolliate, vi dico sin da ora che al click del mouse viene creato una specie di pianeta con dei satelliti a distanza, dimensione, velocità di rotazione e verso casuali..
ora.. come potete notare, il programma è semplice, non utilizzo niente di particolarmente comlicato..
ma mi servirebbe di modificarne l'aspetto grafico finale, inserendo in una finestra che posso far apparire a scelta, un'anteprima di dimensioni ridotte di ciò che succede nella finestra dell'applicazione..
mi hanno detto che posso utilizzare la classe BufferedImage e le trasformazioni affini (AffineTransform) per applicare il ridimensionamento dell'elemento passato come BufferedImage..
se potete darmi una mano.. ve ne sarei grato..
io non ho idea di come fare (soprattutto xké nelle API della java-documentation non sono riuscito a trovare le funzioni che avrei potuto usare in nessuno dei due casi -AffineTransform e BufferedImage-).
enlargedImage.setRGB(x, y, image.getRGB(x/n, y/n));
return enlargedImage;
}
con qualche modifica si può fare il lavoro inverso.
Ultima modifica effettuata da netarrow il 10/07/2007 alle 21:03
()
Newbie
Messaggi: Iscritto:
Postato alle 10:31
Mercoledì, 11/07/2007
e credi sia adatto anche alle immagini in movimento come accade per il programma che ho postato su?
non so bene come funzionano le BufferedImage class... ma da come vedo nei vari programmi che si trovano sparsi in varie guide sulla rete.. è una classe che viene utilizzata per il disegno o per la trasformazione di immagini "fisse" o "statiche".. io ho dei satelliti orbitanti in continuo movimento.. non so se l'utilizzo in quel modo della BufferedImage sia adatto... da come leggo è soprattutto un'approssimazione pixel per pixel... e non una vera e propria operaizone di scalatura dell'immagine..
e pixel per pixel, con l'antialias attivo... ho il terrore che si possa scazzare notevolmente il programma...
cmq farò alcune prove.. ma ho serissimi dubbi che funzioni
invece di disegnare direttamente nel Graphics2D del pannello potresti lavorare in double buffering, quindi disegnare un in Image che farà appunto da buffer (farai quindi il getGraphics su questa immagine) e disegnerai li tutte le varie fasi, a questo punto per ogni iterazione travaresai il BufferedImage di quella immagine così come sta al pannello principale, e al pannello miniatura il BufferedImage modificato.
Ultima modifica effettuata da netarrow il 11/07/2007 alle 22:00
ho provato ad aggiungerlo nel tuo codice (che non so perchè ma il forum lo fa diventare sbagliato togliendo gli indici di alcuni array) e funziona(vedo tutto ridotto).
Quindi basta che crei un secondo Graphics filtrato da un AffineTransform che riproduca l'immagine grande scalata di metà, di un quarto o come preferito, per aumentare si mette maggiore di 0.
Cmq credo sia possibile risolvere anche col BufferedImage, solo che c'è molto più lavoro da fare visto che si deve fare il lavoro sporco a mano lavorando sui pixel.
Ultima modifica effettuata da netarrow il 11/07/2007 alle 23:53
()
Newbie
Messaggi: Iscritto:
Postato alle 19:30
Giovedì, 12/07/2007
oggi, durante l'esame, ho risolto il problema...
esiste il pixelGrabber.. e mediante quello ho apportato le modifiche opportune... ora non ho tempo, ma appena posso ti spiego meglio cosa ho fatto..
si ho presente PixelGrabber, però mi sa che è cmq un lavoraccio lavorare a mano sui pixel.
Io ho risolto con AffineTransform, ho creato una seconda finestra più piccola chiamata Dettaglio che mostra tutto ciò che succede nella grande rimpicciolito in scala 1/4, la finestra piccola sfarfalla un pò ma con un doppio buffering si risolve:
(purtroppo il forum fa ancora bizze con gli indici, credo che lo confondano col BbCode, se metti dentro eclipse ti risole tutto da solo)