[ANIMATION] Hintergrundbild nur einmal zeichnen

haui95

Bekanntes Mitglied
Guten Tag,

ich bin gerade dabei eine Ampelsteuerung zu simulieren. Das Programm ist theoretisch fertig, jedoch wird die CPU bei der Ausführung zu 40 % ausgelastet. Ich habe eine Kreuzung als Hintergrundbild (BufferedImage) und auf diesem werden Autos auch in Form von Bildern bewegt und bei jeder Positionsänderung neu gezeichnet. Nun muss das statische Hintergrundbild eigentlich nur einmal gezeichnet werden, da es sich ja nicht ändert. Die CPU Auslastung ist dadurch sehr beeinflusst, zumal das Bild eine Größe von 900x600 Pixel hat.

1.Frage: Ist es möglich, dass das Hintergrundbild nur einmal in der paintComponent() Methode des JPanels gezeichnet wird und trotzdem das Zeichnen der Autos kein komplettes leeren des Bildschirms zur Folge hat?

2. Frage:
Ich benutze für die Darstellung der Zeichenoperationen ein JPanel. Ein JPanel wird standardmäßig passiv gerendert und doppelt gepuffert. Nun habe ich mit BufferedImage ein eigenen Buffer erstellt und rendere das Bild aktiv. Ein deutlicher Performanceunterschied ist jedoch nicht spürbar. Wie lassen sich dann ein mehrfach wiederholtes neuzeichnen von Bildern optimieren, sodass die CPU nicht so stark beansprucht wird. Trotz dessen, dass meine Anwendung mit konstanten 60 FPS läuft, ruckelt es trotzdem an einigen Stellen.

Vielen Dank!

MfG

Hauke
 

jemandzehage

Aktives Mitglied
Moin,

also erstmal prinzipiell: Zeichnen in Swing ist immer relativ langsam, da viele Berechnungen über die CPU laufen. Das kannst du nur dadürch beschleunigen, indem du eine API verwendest, die Zugriff auf die Graphikkarte hat. Das wäre z.B. Lwjgl (oder seit Javs 7 javafx - aber auf Linux hilft das auch nicht weiter), aber dann würdest du wahrscheinlich nicht um einen komplettumbau deiner Anwendung herum kommen. Da das Programm bei 60 fps läuft und du das Gefühl hast, das es ruckelt kommt wahrscheinlich daher, dass du immer 16,66 Sekunden wartest ungeachtet dessen, dass das Zeichnen auch Zeit in Anspruch nimmt. Also musst du beim warten immer die Zeit Abziehen die das Rendern verbraucht hat.

Grüße
 

TheSorm

Bekanntes Mitglied
Zur ersten frage: naja an sich mit einer boolean variable, die sich auf true stellt wenn das bild gezeichnet wird, und das hin tergrundbild wirt nur gezeichnet wenn diese variable auf false steht

also

Java:
 if( hgb_gezeichnet ==false){
//zeichne hintergrundbild
hgb_gezeichnet==true;
}
 

Ruzmanz

Top Contributor
Wenn die Autos über das statische Bild fahren, muss es immer neu gezeichnet werden. Ein häufiges Problem ist, dass manche Anfänger die Bilder nicht im RAM zwischenspeichern, sondern immer von der Festplatte lesen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Minecraft Casino EinarmigerBandit Animation Spiele- und Multimedia-Programmierung 5
B Animation Spiele- und Multimedia-Programmierung 4
Meeresgott Morph Targets und Skeleton Animation Spiele- und Multimedia-Programmierung 2
J (Libgdx) animation nur einmal in einem Event aufrufen Spiele- und Multimedia-Programmierung 1
N Animation funktioniert icht wie sie soll Spiele- und Multimedia-Programmierung 10
K Animation fliegendes JLabel Spiele- und Multimedia-Programmierung 1
R [LWJGL] Skeletal Animation Spiele- und Multimedia-Programmierung 5
F [LWJGL] Skeletal Animation 3D Spiele- und Multimedia-Programmierung 1
R Animation mit Interpolator starten wenn Key pressed Spiele- und Multimedia-Programmierung 0
kaoZ Animation in eigenen Thread auslagern..... Spiele- und Multimedia-Programmierung 1
S Animation zieht "Spur" hinter sich her Spiele- und Multimedia-Programmierung 2
A LwJGL - Animation Stockt Spiele- und Multimedia-Programmierung 5
0 Sprung Animation Spiele- und Multimedia-Programmierung 10
M [Java3D] Animation von mehreren Objekten Spiele- und Multimedia-Programmierung 7
C Java3D Interaktion während Animation Spiele- und Multimedia-Programmierung 3
StrikeTom .gif animation als image abspielen Spiele- und Multimedia-Programmierung 2
G [Java3D] Probleme bei Animation Spiele- und Multimedia-Programmierung 4
baddestpoet Animation startet bei gedrückter Taste immer wieder von vorn Spiele- und Multimedia-Programmierung 12
M Animation Spiele- und Multimedia-Programmierung 5
aze Animation an TransformGroup anpassen Spiele- und Multimedia-Programmierung 5
S Animation mit repaint Spiele- und Multimedia-Programmierung 2
K "Animation" funktioniert nur bedingt. Spiele- und Multimedia-Programmierung 8
W Flüssige Animation Spiele- und Multimedia-Programmierung 8
B Animation durch Button auslösen Spiele- und Multimedia-Programmierung 2
J Animation hinter transparentem Bild auf der GlassPane Spiele- und Multimedia-Programmierung 6
D Problem mit Animation bei Little Fighter Spiele- und Multimedia-Programmierung 5
R Double Buffering in Animation ich bekomms einfach nicht hin? Spiele- und Multimedia-Programmierung 3
G GL4Java Animation erstellen Spiele- und Multimedia-Programmierung 2
T Geschwindigkeit einer Animation aendern Spiele- und Multimedia-Programmierung 6
S 3ds animation einbinden Spiele- und Multimedia-Programmierung 3
A Animation mit jmonkeyengine Spiele- und Multimedia-Programmierung 10
S Gif Animation aus Prog heraus erstellen Spiele- und Multimedia-Programmierung 11
Y Hintergrundbild in Jframe einfügen Spiele- und Multimedia-Programmierung 8
Fu3L Extreme Prozessorauslastung durch Hintergrundbild Spiele- und Multimedia-Programmierung 5
F noch einmal MouseMotionListener Spiele- und Multimedia-Programmierung 1
C KeyPressed Taste nur einmal drücken Spiele- und Multimedia-Programmierung 6

Ähnliche Java Themen

Neue Themen


Oben