Hallo
Ich hab folgendes Problem mit Bilder allgemein:
Ich hab eine JPanel auf dem ich zeichnen will. Dazu überschreib ich die paint methode
drawGrid malt ein Gitter, das funktioniert auch wunderbar
drawComponent sieht so aus:
Das Problem was ich jetzt habe sieht so aus:
Bei StreetFields handelt es sich um ein Vektor, der StreetField Objekte aufnimmt. Wenn ein weiteres Objekt hinzukommt, wird das auch gezeichnet. Lösche ich aber eins aus dem Vektor, bleibts immer noch im Bild "heften". Selbst wenn ich versuche, auf der Stelle des ursprünglichen Bildes ein schwarzes Viereck zu zeichnen, so bleibt das Bild weiterhin sichtbar. Verwende ich hingegen statt dem BufferedImage den orginalen Graphics Kontext,
so verschwinden beim Bewegen des Fensters alle Bilder bis auf das zuletzt hinzugefügte.
Ähnlich verhält sich unabhängig von der Verwendung vom orginalen oder offscreen Graphics Kontext, wenn ich das Bild eines beliebigen StreetField Objekt verändere. Nur das zuletzte hinzugefügte verändert sich. Am Vektor hängts net, da wird alles korrekt aufgefasst.
Tut mir leid, für die etwas längliche Beschreibung
Hat jemand eine Idee oder einen Tipp?
Mir fällt nix mehr ein
Gruss Alex
Ich hab folgendes Problem mit Bilder allgemein:
Ich hab eine JPanel auf dem ich zeichnen will. Dazu überschreib ich die paint methode
Code:
buffer= new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_INT_RGB);
zBuffer = buffer.getGraphics();
Code:
public void paint(Graphics g){
drawComponents(zBuffer);
drawGrid(zBuffer);
g.drawImage(buffer, 0,0, this);
}
drawGrid malt ein Gitter, das funktioniert auch wunderbar
drawComponent sieht so aus:
Code:
private void drawComponents(Graphics g){
StreetField tmpStreetField;
Point tmpRealXY;
Image tmpImage;
if(!streetFields.isEmpty()){
for (int i=0;i < streetFields.size(); i++ ){
tmpStreetField = streetFields.elementAt(i);
tmpRealXY = tmpStreetField.getRealXY();
tmpImage = tmpStreetField.getStreetImage();
g.drawImage(tmpImage, tmpRealXY.x, tmpRealXY.y, this);
}
}
Das Problem was ich jetzt habe sieht so aus:
Bei StreetFields handelt es sich um ein Vektor, der StreetField Objekte aufnimmt. Wenn ein weiteres Objekt hinzukommt, wird das auch gezeichnet. Lösche ich aber eins aus dem Vektor, bleibts immer noch im Bild "heften". Selbst wenn ich versuche, auf der Stelle des ursprünglichen Bildes ein schwarzes Viereck zu zeichnen, so bleibt das Bild weiterhin sichtbar. Verwende ich hingegen statt dem BufferedImage den orginalen Graphics Kontext,
so verschwinden beim Bewegen des Fensters alle Bilder bis auf das zuletzt hinzugefügte.
Ähnlich verhält sich unabhängig von der Verwendung vom orginalen oder offscreen Graphics Kontext, wenn ich das Bild eines beliebigen StreetField Objekt verändere. Nur das zuletzte hinzugefügte verändert sich. Am Vektor hängts net, da wird alles korrekt aufgefasst.
Tut mir leid, für die etwas längliche Beschreibung
Hat jemand eine Idee oder einen Tipp?
Mir fällt nix mehr ein
Gruss Alex