Hallo liebe Forengemeinde,
ich habe ein BufferedImage
das ich in einer paint-Methode zeichen möchte.
Dazu verwende ich zur Zeit BufferedImage.setRGB(x,y,rgb).
Das funktioniert soweit auch ganz gut, bis auf die Tatsache
das das ganze zu langsam ist.
Und jetzt die Frage:
Gibt es eine Alternative zu setRGB()?
Vieleich über den Array eines BI.
Und wenn ja wie komme ich an diesen Array heran?
Danke schonmal für eure Antworten.
PS: Hoffentlich hilft das: der Quellcode der das Problem aufgeworfen hat:
Hinweis:
Der Code ist aus eine stückbasierten Spiel:
pmgt ist eine zentrale Verwaltungsklasse für alle Bilder im Spiel
map ist ein int-Array der die Position der Stücke angibt
ich habe ein BufferedImage
das ich in einer paint-Methode zeichen möchte.
Dazu verwende ich zur Zeit BufferedImage.setRGB(x,y,rgb).
Das funktioniert soweit auch ganz gut, bis auf die Tatsache
das das ganze zu langsam ist.
Und jetzt die Frage:
Gibt es eine Alternative zu setRGB()?
Vieleich über den Array eines BI.
Und wenn ja wie komme ich an diesen Array heran?
Danke schonmal für eure Antworten.
PS: Hoffentlich hilft das: der Quellcode der das Problem aufgeworfen hat:
Code:
/*
* Erstelle keine neues Bild sondern update nur
* die Pixel die sich vom alten Bild her ändern.
* Dieser Vorgang wird nur ausgeführt wenn sich
* überhaupt etwas ändert.
*/
if(
(x!=otx)||
(y!=oty)||
(tempW!=otw)||
(tempH!=oth)
){
for (int xx = 0; xx < screenWidth; xx++)
for (int yy = 0; yy < screenHeight; yy++)
if(bi.getRGB(xx,yy)!=pmgt.getImg().get(
map[(Math.abs(y)+yy) / tempH]
[(Math.abs(x)+xx) / tempW] - 1).getRGB(
((Math.abs(x)+xx)-((((Math.abs(x)+xx)/tempW)*tempW))),
((Math.abs(y)+yy)-((((Math.abs(y)+yy)/tempH)*tempH)))))
bi.setRGB(xx, yy, pmgt.getImg().get(
map[(Math.abs(y)+yy) / tempH][(Math.abs(x)+xx) / tempW] - 1).getRGB(
((Math.abs(x)+xx)-((((Math.abs(x)+xx)/tempW)*tempW))),
((Math.abs(y)+yy)-((((Math.abs(y)+yy)/tempH)*tempH)))));
otx = x;
oty = y;
otw = tempW;
oth = tempH;
}
Der Code ist aus eine stückbasierten Spiel:
pmgt ist eine zentrale Verwaltungsklasse für alle Bilder im Spiel
map ist ein int-Array der die Position der Stücke angibt