BufferedImage aus vielen einzelbildern Erstellen

Hallo,
mal eine frage und zwar ist es möglich ein BufferedImage aus vielen Einzelbildern zu erstellen?
Mein Problem ist es, dass ich in meinem Programm welches ich geschrieben habe zu viele Objekte Erzeuge und dadurch die Bild Wiederholungsrate ins Bodenlose sinkt.
Bei dem Programm handelt es sich um ein kleines Labyrinth Spiel, bei dem ich ein Zufalls generiertes Labyrinth erstelle indem ich nach einem Algorithmus ein 2 Dreidimensionales Boolean Array mit True und False werten fülle. Überall wo True ist soll ein kleines Stückchen Mauer gezeichnet werden überall Wo False ist soll nichts Passieren. Dass funktioniert alles eigentlich auch recht gut also genau so wie ich es haben will. Das Sieht ungefähr so aus:

public void mauerBauer(){
horst = new WallBuilder(tmp); //erstellen des arrays mit der seitentengröße tmp
BufferedImage[] wall = this.loadPics(„pics/Mauer2.gif“,1); //laden des bildes mit dem das array gefüllt werden soll
for ( int zeile = 0; zeile

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)