![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Gast
Beiträge: n/a
|
Hallo, ich habe eine Frage zu Swing programmen mit grafik. Wenn man zum Beispiel eine Applikation mit einem hintergrund aus drei farben hat, jede farbe nimmt einen bekannten platz als farbiges rechteck ein. Wenn ich jetzt eine animation machen will muss ich den gesamten hintergrund löschen und neuzeichnen um die änderung der animation darzustellen und diese schlieren die das bild zieht zu vermeiden. Was zwar leicht zu machen ist bei meinem simplen hintergrund aus drei Farben doch die geschwindigkeit etwas beeinflusst mit der die animation dargestellt wird. Nun hab ich eine Frage Soll ich die Stellen die neugezeichnet werden müssen einfach nur mit der richtigen farbe übermalen (das wäre dann ein andersfarbiges rechteck um 2 pixel verschoben) oder soll ich jedesmal wenn sich was bewegt den bildschirm löschen alles neuzeichnen inklusive der änderung und das bild dann im vordergrung anzeigen? Gibt es da noch eine andere Methode? Mittlerweile bin ich bei 10ms im Thread wo die repaint schleife aufgerufen wird aber schneller wirds nimmer. Vielleicht muss man das mit Offscreen images machen aber wenn ich mir ein BufferedImage und seinen Grafikkontext mit createGraphics besorge und dann die Doppel Pufferung darauf anwende ist das image nach jedem repaint leer und muss nochmal neu gezeichnet werden bevor es mit drawImage schließlich angezeigt werden kann (Klar wegen der Änderung), aber das dauert zu lange. Wie gesagt es ist deutlich langsamer geworden seitdem ich alles neuzeichne und über eine bestimmte geschwindigkeit komm ich dann nicht mehr hinaus ich will aber das es so schnell ist wie vorher. lg Fridolin |
|
| | Nach oben #2 |
| Neuer Benutzer Registriert seit: 27.05.2004
Beiträge: 25
|
Ich glaube, Doppelbufferung ist dein Freund. Mehr dazu im Swing-Multimedia-Tutorial auf meiner HP (www.walfisch.ch.vu unter Tutorials) MfG Bischi |
| | |
| | Nach oben #4 |
| Gast
Beiträge: n/a
|
DoubleBuffering wird es deswegen genannt, weil du 2 Malflächen hast. Bildschirm und Puffer. Ohne DoubleBuffering hast du nur den Bildschirm. Immer wenn du diesem neu zeichnest wird der Bildschirm gelöscht und alles wird neu gezeichnet. Dabei entsteht das Flackern. Bei DoubleBuffering werden alle Zeichnung erst auf den Puffer gemalt und wenn alles fertig auf dem Bildschirm übertragen. Also brauch der Bildschirm nicht gelöscht werden und es ensteht kein Flackern. Eigentlich ganz einfach. mfg Soulfly |
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Flackern nach animation....JVM zu beschäftigt? | maxpower24 | Desktop-Applikationen und Grafik | 3 | 15.10.2004 14:59 |