Newsgroup: it.comp.java
Titolo: Copiare e riusare oggetti grafici

Quando i dubbi vengono, vengono tutti insieme... e allora ecco il secondo
(tutt'altro contesto).
A quel che ho capito, il meccanismo di rendering verso un dispositivo di
autput (stampante, video o altro) funziona più o meno inb questo modo:
- il sistema chiama il metodo opportuno (paint, print, ecc...) della mia
classe passandogli un oggetto grafico (chiamiamolo G) che lui (il sistema)
sa che dovrà renderizzare sul dispositivo in questione..
- io ho fatto l'override o ho definito il metodo opportuno in modo che
disegni tutti i troiai che mi pare sull'oggetto G (proprio su quello
passatomi dal sistema)
- il sistema renderizza G sul dispositivo
Mettiamo ora che le mie operazioni di disegno comportino anche una serie di
operazioni complesse ed onerose, ma diverse da quelle strettamente e
direttamente necessarie per il disegno (tipo g.drawImage), che io vorrei
evitare di ripetere ogni volta che il sistema mi invoca il metodo di
disegno... la domanda è: come posso creare la mia "composizione" di oggetti
grafici e poi riussarla tutta insieme senza stare a ripetere le operazioni
per disegnare ogni singolo oggetto (immagine, testo o geometria)?
Per farmi capire, vorrei ottenere quello che si otterebbe (se fosse
possibile, am mi pare di no) con questo metodo: creo un G1 mio, sul quel
disegno quelo che mi pare e al quale mantengo un riferimento. Quando il
sistema invoca paint(), print() o analoghi passandomi G, io lo "sostituisco"
con G1, oppure ci copio (ma non ho trovato i metodi per farlo!!) pari pari
in una botta sola il contenuto di G1...
Un po' come definire un Rectangle2D di nome mioRettangolo e poi fare
g.draw(mioRettangolo) invece che g.drawRect(23,45,45,45)... solo che io
vorrei definire non una siungola geometria, ma un'insieme di geometrie,
testi, immagini...
Si è capito a cosa miro? Ovviamente non mi aspetto che il sistema per farlo
sia questo, ma si può fare? E come?
Grazie
Giacomo

 sia questo, ma si può fare? E come?
disegna dentro ad un'immagine off-screen e poi usa g.drawImage(...)
ciao)o
--
Andrea
http://jame.sf.net

 ciao)o
Ehm... grazie mille, ma troppo facile!  :-p
A parte gli scherzi, un'immagine č imho una soluzione moooolto approssimata
al mio problema: io ho una formazione da grafico, e traformare un output
vettoriale in bitmap se non strettissimamente necessario suona un po' come
un'eresia! Inutile che stia ad elencarti i problemi di risoluzione,
resampling, antialiasing, ecc...
Altre idee?
Grazie
Giacomo

 resampling, antialiasing, ecc...
tu vuoi disegnare dentro ad un oggetto G1 e poi copiarlo in G
ma devi considerare che un oggetto Graphics o Graphics2D non è altro che
una classe che implementa le operazioni di disegno e non un disegno
vettoriale
il disegno vettoriale te lo devi costruire tu con
i metodi necessari per convertirlo in Image
guarda caso io sto realizzando qualcosa in tal senso,
prendendo come esempio Macromedia Flash ho
realizzato un package con il quale è possibile costruire
un movie complesso con layer, oggetti, action e suoni
il software è in fase beta (funzionante, ma incompleto)
e lo puoi scaricare da 
http://digilander.libero.it/schiele
puoi ispirarti per costruire una tua classe GraficoVettoriale
(assieme al pacchetto è inclusa una demo piuttosto pesante
per testare le prestazioni del software sotto carico quindi
non stupirti se è abbastanza lento :)


 non stupirti se è abbastanza lento :)
Ok, proverò appena ho un po' di tempo. Grazie.
Giacomo

 disegnare ogni volta in un colpo solo sull'oggetto G...
ecco, appunto, il mio package fà qialcosa di
simile, in più è pensato per scene in movimento
mi sono dimenticato di dirti che il package è it.axm.jMM.Multimedia
e le classi che dovrebbero interessarti maggiormente sono:
jMM_Pipeline, jMM_Shape, jMM_Image, jMM_Text, jMM_Movie
