Also gibt es eine Möglichkeit das
komplett gezeichnete Bild in einem eigenen BufferedImage zu
speichern und dann nur dieses Neu zeichnen zu lassen? Und wenn
es so etwas gibt wie geht denn das?
Du kannst direkt in ein BufferedImage malen. Also wenn deine einzelnen Spielfelder - also z.B. ein Mauerstück - 20x20px groß sind und dein Spielfeld aus 40x40 Feldern besteht, dann wäre das gesamte Spielfeld ja z.B. 800x800 Pixel groß.
Dann legst du erstmal ein so großes BufferedImage an:
BufferedImage spielfeld = new BufferedImage(800,800, BufferedImage.TYPE\_INT\_RGB);
In dieses Bild kannst du dann deine einzelnen Mauer-Stücke an die gewünschte Position reinmalen. Also z.B. das erste Feld oben links ist ja logischerweise bei Position (0,0). Das zweite Feld dann bei (20,0) usw usf. Dazu benötigst du ein Graphics2D-Objekt das du vom BufferedImage mit der Methode createGraphics() bekommst. Mit Hilfe von Graphics2D kannst du dann z.B. ein anderes Bild (also z.B. ein Mauerstück) an eine beliebige Stelle zeichen mit der Methode drawImage().
Angenommen du hast das Mauerstückenbild bereits in ein eigenes BufferedImage namens mauerImage geladen. Um dann also die Mauerstücke an die gewünschten Positionen zu
int anzahlFelderX = 40; // Anzahl Spielfelder in x-Richtung
int anzahlFelderY = 40; // Anzahl Spielfelder in y-Richtung
int feldBreite = 20; // Breite eines Feldes (z.B. Mauerstueck)
int feldHoehe = 20; // Hoehe eines Feldes (z.B. Mauerstueck)
// Bild eines einzelnen 20x20px grossen Mauerfeldes laden
BufferedImage mauerImage = loadMauerImage();
// Komplettes Spielfeld-Bild in passender Groesse anlegen
BufferedImage spielfeld = new BufferedImage(
anzahlFelderX \* feldBreite,
anzahlFelderY \* feldHoehe,
BufferedImage.TYPE\_INT\_RGB);
// Jedes Feld im Spiefeld durchlaufen und wenn gewollt an die
// Stelle eine Mauer mit Graphics2D zeichnen:
Graphics2D g2d = spielfeld.createGraphics();
for (int feldX=0; feldX
Was du also brauchst ist:
BufferedImage http://java.sun.com/j2se/1.4.2/docs/api/java/awt/image/BufferedImage.html
BufferedImage.createGraphics() http://java.sun.com/j2se/1.4.2/docs/api/java/awt/image/BufferedImage.html#createGraphics()
Graphics2D http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Graphics2D.html
Graphics2D.drawImage() http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Graphics.html#drawImage(java.awt.Image,%20int,%20int,%20java.awt.image.ImageObserver)