1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| public class DoubleBufferingSoftware extends Frame{
// boucle d'affichage
RenderingThread renderingThread = new RenderingThread();
// buffer mémoire (2eme buffer)
Graphics buffer;
// image mémoire correspondante au buffer
Image image;
int x = 0; // coordonnée x de l'affichage du texte
public DoubleBufferingSoftware(){
//affichage
setSize( 400, 400 );
setVisible( true );
// on démarre la bouche d'affichage
renderingThread.start();
}
public void update(Graphics g){
paint(g);
}
public void paint( Graphics g ){
//création du buffer si il n'existe pas
if(buffer==null){
image = createImage(400,400);
buffer = image.getGraphics();
}
//on dessine sur le buffer mémoire
buffer.setColor( Color.white );
buffer.fillRect( 0, 0, 400, 400 );
buffer.setColor( Color.black );
buffer.drawString( "affichage d'une ligne de texte", x, 200 );
x++;
if(x>400) x = 0;
// finalement, le buffer mémoire est dessiné dans le buffer d'affichage
g.drawImage(image, 0, 0, this);
}
class RenderingThread extends Thread {
/**
* Ce thread appelle le rafraichissement de notre fenêtre
* toutes les 10 milli-secondes
*/
public void run(){
while(true){
try {
repaint();
sleep( 10 );
} catch ( Exception e ) {}
}
}
}
public static void main(String[] args){new DoubleBufferingSoftware();}
} |
Partager