Newsgroup: it.comp.java
Titolo: draw sopra immagine gif?

Salve a tutti,
    potreste darmi una dritta su come disegnare dei rettangoli su
un'immagine gif?Grazie Cippo741
class disegnoalsx extends JPanel
{
    public void init()
  {
   picture2 = new JLabel(createImageIcon("images\\bianco.gif"));
   picture2.setPreferredSize(new Dimension(370, 20));
   this.add(picture2);
repaint();
}
public void paintComponent(Graphics g2)
  {
   super.paintComponent(g2);
   Graphics2D g1 = (Graphics2D)g2;
   g1.drawRect(80, 50, 300, 60);
:
:
 for ( int j = 2; j < 4; j++)
   {
    g1.setColor(semaforosso==false?Color.green:Color.red);
    g1.fill(BUS[j]);//per colorare il bus
    g1.draw(BUS[j]);
   }
}
viene sempre solo il disegno sovrapposto. Grazie

Ciao Cippo.
Tu hai esteso un pannello e poi ci hai poggiato sopra una Label.
E' fin troppo ovvio che se ridefinisci il metodo paint del pannello, il
tuo disegno verrà sempre coperto dalla label.
Gli oggetti grafici sono una serie di piani che vengono disegnati dal più
basso al più alto (il quale copre tutto quello che c'è esotto la sua area).
La soluzione al tuo problema dipende da quello che vuoi fare:
 - Devi disegnare dinamicamente dei simboli su una GIF da abbinare a delle
label?
 - Vuoi disegnare in generale su un'immagine tipo Paint?
Fammi sapere.....
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

"TelespallaBob" <no-...@pluto.ico> ha scritto nel messaggio
news:c3n2sr$ga1$1...@news.newsland.it...

Ciao, grazie dell'interessamento.
Praticamente io vorrei prendere una gif di una cpu e disegnargli sopra 8
rettangolini uniti per formare un registro e poi mettere dinamicamente dei
valori binari dentro i rettangolini. Lo avevo già fatto solo che mi è venuto
in mente di piazzare sotto il disegno della cpu per rendere la cosa più
carina. Grazie

"TelespallaBob" <no-...@pluto.ico> ha scritto nel messaggio
news:c3n2sr$ga1$1...@news.newsland.it...

Scusa, cerco di spiegarmi meglio:
originariamente avevo solo 8 rettangolini creati con drawrect che cambiano
colore e valore all'interno dinamicamente(cambio colore e valore;repaint()).
adesso vorrei mettere sotto una gif di una cpu. Pensavo che attaccando la
label(che è la gif della cpu) e poi disegnando rettangoli etc avrei risolto
il problema. Invece no.Vedo solo la gif. I rettangoli sono sotto. Spero di
essere stato più chiaro. Grazie.

 
Ti sei risposto da solo! I rettangoli sono sotto.
Disegnali sulla label :-) cioč invece di specializzare un
JPanel, a disegnoalsx fai estendere JLabel.
Ciao
	Federico

Cia, per fare delle piccole animazioni hai due scelte:
1 - Animazione Precalcolata/Disegnata: Non fai altro che crearti una bella
Gif animata utilizzando uno dei tanti programmi scaricabili dalla rete. La
applicihi ad una JLabel (che è in grado di gestire Gif animate).
2 - Animazione in RealTime: qui devi usare qualche trucchetto tipo vecchi
videogame 2D.
Devi usare la tecnica del doublebuffering.
Il trucco è semplicissimo:
a) crea un'area temporanea delle stesse dimensioni dell'immagine di sfondo
(che chiameremo SourceImage) e che chiameremo VirtualScreen
// questi punti mettili in un Thread
b) disegna sul VirtualScreen la SourceImage
c) disegna sul VirtualScreen i tuoi rettangoli e numeri.
Avrai già capito che queste stratificazioni ti permettono di creare un
composite di immagini (Bitmap o vettoriali che siano) e se ben
implementate creare una strttura tipo (ma molto alla lontanaaaaa)
PhotoShop.
Unico neo tanti livelli tanta memoria in più :).
Questa tecnica evita anche spiacevoli sfarfallii e che viene utilizzata
soprattutto dalle Applete per i loro testi scorrevoli, fuocherelli etc.
Usa sempre le BufferedImage, perchè queste classi hanno un loro
graphicsContext che ti permette di disegnargli direttamente sopra, senza
aspettare il Graphics che ti arriva dai componenti grafici.
Caricata l'immagine usando il MediaTracker per assicurarti che questa sia
stata letta completamente prima del suo utilizzo.
Se usi componenti derivati da JComponent come visualizzatori di immagini,
ricordati di estendere il metodo paintComponent(Graphics g) e non il
paint(Graphics g), e come prima istruzione da eseguire in essi è:
super.paintComponent(g);
Se hai problemi fammi sapere
