Hi,
Ich wollte ein wenig in die Grafikprogrammierung einsteigen und hab mir folgendes Programm gebastelt.
Ein Kreis wandert einfach über das Fenster.
Jetzt wollte ich mit der Doppelpufferung verhindern, dass der Kreis "nachzieht"..
Ich habe Beispiele im Netz gefunden, aber ich verwende sie anscheinend falsch.
Kann mir jemand sagen, was daran falsch ist?
Ich wollte ein wenig in die Grafikprogrammierung einsteigen und hab mir folgendes Programm gebastelt.
Ein Kreis wandert einfach über das Fenster.
Jetzt wollte ich mit der Doppelpufferung verhindern, dass der Kreis "nachzieht"..
Ich habe Beispiele im Netz gefunden, aber ich verwende sie anscheinend falsch.
Java:
import javax.swing.*;
import java.awt.*;
import java.util.*;
public class KreisZeichnen extends JFrame implements Runnable {
int xPos = 50;
int yPos = 50;
// Variablen zur Doppelpufferung
private Image dbImage;
private Graphics dbg;
public KreisZeichnen() {
gui();
Thread th = new Thread(this);
th.start();
}
public void gui() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600,600);
setVisible(true);
}
public void run() {
while (true) {
xPos++;
yPos++;
repaint();
try {
Thread.sleep(20);
} catch (InterruptedException e) {
}
}
}
// Methode zur Doppelpufferung
public void update(Graphics g) {
// Initialisierung des DoubleBuffers
if (dbImage == null) {
dbImage = createImage (this.getSize().width, this.getSize().height);
dbg = dbImage.getGraphics();
}
// Bildschirm im Hintergrund löschen
dbg.setColor (getBackground());
dbg.fillRect (0, 0, this.getSize().width, this.getSize().height);
// Auf gelöschten Hintergrund Vordergrund zeichnen
dbg.setColor(getForeground());
paint(dbg);
// Nun fertig gezeichnetes Bild Offscreen auf dem richtigen Bildschirm anzeigen
g.drawImage(dbImage, 0, 0, this);
}
public void paint(Graphics g) {
g.drawOval(xPos,yPos,100,100);
}
public static void main(String[] args) {
KreisZeichnen zeichnen = new KreisZeichnen();
}
}
Kann mir jemand sagen, was daran falsch ist?