Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Problema con repaint()

  1. #1

    Problema con repaint()

    Ciao a tutti, sto continuando il mio programma usando canvas.
    Ho riscontrato il seguente problema.
    Quando chiamo il metodo repaint() per un istante sembra che le immagini spariscano per poi ricomparire una frazione di secondo dopo, e questo mi crea un effetto "tremolante" che vorrei evitare.
    Da cosa dipende ciò e come si può evitare? Grazie.

    Il codice è questo. Sbaglio a richiamare repaint() così?

    codice:
    public void paint(Graphics g){ 
             
             Graphics2D gr=(Graphics2D)g; 
             int i; 
    
             gr.drawImage(sfondo, 0, 0, getWidth(), getHeight(), null); 
    
             for(i=0;i<comp.length;i++) 
                    gr.drawImage(comp[i].getImmagine(), comp[i].getX(), comp[i].getY(),
                    comp[i].getLarghezza(), comp[i].getAltezza(), null); 
    
             try{ 
                   Thread.sleep(700); 
             }catch(InterruptedException e){} 
    
             repaint(); 
    }
    Please, don't leave any threads alive

  2. #2
    Mi è venuta in mente una cosa:
    può dipendere dal fatto che le immagini stampate siano sovrapposte?
    Please, don't leave any threads alive

  3. #3
    Il problema è dato dal fatto che non utilizzi nessuna tecnica di buffering.
    Quello che serve a te è il Double Buffering

  4. #4
    Si, confermo, ho constatato che il problema è la sovrapposizione delle immagini.
    Il Double Buffering serve a risolvere questo?
    Please, don't leave any threads alive

  5. #5
    Yes.

  6. #6
    System.out.print("Grazie mille!!!");
    Please, don't leave any threads alive

  7. #7
    while(!succes)
    {
    iWillTry();
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Riguardo però a chiamare repaint() dentro paint() pur non avendo trovato una documentazione ufficiale, a parte
    non aver mai visto farlo, sole dal googlare "repaint in paint" o "repaint inside paint" trovo
    solo commenti tipo: it's bad, it's wrong, ... Sconsiglio fortemente.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.