Also ich bin eigentlich bezüglich Swing und weiterer grafikprogrammierung totaler anfänger und habe ein problem. Ich würde gere ein feld genereiren dass sich aus viele einzelnen gleichen bildern zusammensetzt. Dieses so entstandene Raster muss ich relativ oft ausgeben also sind immer repaints fällig die jede menge resourcen ziehen. Deshalb habe ich mir gedacht ich speichere einfach das Graphics Objekt ab damit ich nicht immer extra alles neu generieren muss. das hört sich zunächst verwirrend an aber vielleicht wird das klarer wenn man den code sieht.
ich hoffe dass jemand mein problem versteht und mir helfen kann
Code:
class Spielfeld extends JPanel
{
private BufferedImage[][] img;
private boolean veraendert = true;
private Graphics pSave = null;
public Spielfeld(int x, int y)
{
this.setDoubleBuffered(true);
img = new BufferedImage[x][y];
long tim = System.nanoTime();
for (int i = 0; i < x; i++)
{
for (int j = 0; j < y; j++)
{
img[i][j] = new BufferedImage(28, 13, BufferedImage.TYPE_INT_ARGB);
}
}
System.out.println("Initialisierung: " + (System.nanoTime() - tim));
}
@Override
protected void paintComponent(Graphics g)
{
if (veraendert)
{
long tim2 = System.nanoTime();
for (int i = 0; i < 50; i++)
{
for (int j = 0; j < 40; j++)
{
g.drawImage(img[i][j], 28 * j + (i % 2) * 14, i * 7, null);
}
}
veraendert = false;
pSave=g.create();
System.out.println("Generierung: " + (System.nanoTime() - tim2));
} else
{
g=pSave.create();
}
}
public void setzeFeld(int x, int y, BufferedImage bI)
{
img[x][y] = bI;
}
public BufferedImage getImg(int x, int y)
{
return img[x][y];
}
}
ich hoffe dass jemand mein problem versteht und mir helfen kann