Newsgroup: it.comp.java
Titolo: Problema con le immagini

Non riesco ad aspettare la fine della creazione dell'immagine.
Ho implementato un sistema a double buffering per la visualizzazione di una
immagine nitida sullo schermo. Ogni volta prendo l'immagine, ridisegno un
rettangolo bianco, disegno con le istruzioni di Graph quello che devo
disegnare e richiamo la paint che incolla sullo schermo del JPannel
l'immagine... ma proprio qui sembra che non vada..
E' come se non ridisegnasse l'immagine prima che sia completa nell'immagine
di buffering o la funzione venga richiamata prima che l'immagine finale sia
realmente incollata.
Ho provato ad utilizzare mediatracker ma serve solo nella fase di
caricamento da file o da internet e sembra non funzionare con le procedure
di graph..
come faccio a fare attendere che il Buffer o lo sfondo siano completati^???
   import javax.swing.*;
   import java.awt.image.*;
   import java.awt.*;
   import java.awt.Color;
   public class VirtualView extends JPanel
   {
      private boolean drawn;
      private MathWorld World;
      private BufferedImage Buffer;
      private Graphics2D Draw;
      public VirtualView (MathWorld World)
      {
         this.World = World;
         drawn = true;
      }
      public void Pointer ()
      {
         int x, y;
         EngineSpaceObject Swap;
         if (Buffer == null)
         {
            Buffer = (BufferedImage)createImage (600,400);
            Draw = (Graphics2D)Buffer.getGraphics ();
         }
         Draw = (Graphics2D)Buffer.getGraphics ();
         MediaTracker tracker=new MediaTracker(this);
         tracker.addImage(Buffer,0);
         Draw.setColor (Color.white);
         Draw.fillRect (1,1,598,398);
         World.getReset();
         Draw.setColor (Color.black);
         while ((Swap = World.getObject ()) != null)
         {
            int NroPoint = Swap.getNroPoints ();
            for (int i = 0; i < NroPoint; i++)
            {
               Draw.drawRect ((int)Swap.getPointpos (i,1) +
(int)Swap.getPivotpos (1),(int)Swap.getPointpos (i,2)  +
(int)Swap.getPivotpos (2),1,1);
            }
         }
         Draw.drawRect (0,0,599,399);
         try
         {
            tracker.waitForAll();
         }
            catch(InterruptedException e)
            {}
         this.repaint ();
      }
      public void paint (Graphics g)
      {
         if (drawn)
         {
            drawn = false;
            Graphics2D g2 = (Graphics2D) g;
            if (Buffer != null)
            {
               int x = (Buffer.getWidth(this));
               int y = (Buffer.getHeight(this));
               g2.drawImage(Buffer,0,0,x,y,null);
            }
            drawn = true;
         }
      }
--
Home page: 
http://www.pasteur.3000.it
Mirror: 
http://www.fortunecity.it/olimpico/pallavolo/6/index.html
Standard mail: 
mac_p...@hotmail.com
Fast mail (for little mail only) : 
bul...@wappi.com
Icq number :: 14165006

Ciao,
non ho capito bene il tuo problema ma,se può esserti utile, ti dico come ho 
gestito le immagini in un mio programma:
Ho praticamente creato (dentro il metodo paint) un oggetto BufferedImage 
(di nome image) con le dimensioni specificate e quindi ho poi creato 
l'oggetto graphics2D(gbuffer) da image stesso con il metodo 
image.creatGraphics();
In pratica avevo bisogno di disegnare delle forme in paint ecc... e volevo 
successivamente salvare i miei disegni come un immagine, leggendo i manuali 
capii che per fare questo dovevo creare l'oggetto graphics2D direttamente 
dall'oggetto BufferedImage che automaticamente avrebbe memorizzato i 
disegni del paint:
public void paint(graphics g)
{
BufferedImage image = new BufferedImage(dim.width,dim.height)
             Graphics2D gBuffer = image.createGraphics();
...............
tutte le funzioni (draw, fill ecc...) devono essere applicate all'oggetto 
grafico gbuffer e non a g(del paint) che serve solo per inizializzare il 
metodo paint stesso.
..............
}
Non so se la mia esperienza risolve almeno parzialmente i tuoi dubbi..... 
io ci ho provato lo stesso spero possa in qualche modo esserti utile.
CIAO! 
-- 
Posted from 
cclix6.polito.it
 [130.192.9.6] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG