Double-Buffering

Status
Nicht offen für weitere Antworten.

lokiht

Aktives Mitglied
Hallo,
ich versuche gerade die Idee des Double-Bufferings zu verstehen. Irgendetwas mache ich hier falsch. Das Problem ist, dass die Beispiele, die ich so gefunden habe, nicht mit einem Image sondern irgendwelchen Formen arbeiten.

Folgenden Code habe ich nun. Warum sehe ich keinen Effekt. Die Grafik, die ich verschieben möchte ist ca 700kb groß. Aus Performancegründen wollte ich auf dieses Verfahren zurückgreifen.

Code:
package Gui;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;
import javax.swing.JPanel;

public class GameGround extends JPanel {

	String pic = "images/ground/world_map.png";

	int gameGroundX = 0;

	int gameGroundY = 0;


	public GameGround(int x, int y) {
		this.gameGroundX = x;
		this.gameGroundY = y;
	
	}

	protected void paintComponent(Graphics g) {
		g.drawImage(getImage(), this.gameGroundX, this.gameGroundY, this);

	}

	public void update(Graphics g) {
		paint(g);
	}

	public Image getImage() {
		Image img = Toolkit.getDefaultToolkit().getImage(pic);

		return img;
	}

	public int getGameGroundX() {
		return gameGroundX;
	}

	public int getGameGroundY() {
		return gameGroundY;
	}

	public void setGameGroundX(int gameGroundX) {
		this.gameGroundX = gameGroundX;
	}

	public void setGameGroundY(int gameGroundY) {
		this.gameGroundY = gameGroundY;
	}

}

Was mache ich hier falsch?
 

André Uhres

Top Contributor
Das Bild würde ich im Konstruktor laden.
In paintComponent wird es ja bei jedem repaint neu geladen!
Kein Wunder dass das auf die Performance drückt.
 
G

Guest

Gast
Code:
SoftReference<Image> imgRef = null;

...

public Image getImage()
{
  if(imgRef==null || imgRef.isEnqueued())
    imgRef = new SoftReference<Image>(Toolkit.getDefaultToolkit().getImage(pic));
  return imgRef.get();
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
V Applet Double Buffering AWT, Swing, JavaFX & SWT 2
T 2D-Grafik Double Buffering AWT, Swing, JavaFX & SWT 7
lumo SWT Double Buffering AWT, Swing, JavaFX & SWT 5
K Flackern trotz Double-Buffering AWT, Swing, JavaFX & SWT 10
hdi Wie implementiere ich Double Buffering AWT, Swing, JavaFX & SWT 12
G Frage zu Double Buffering AWT, Swing, JavaFX & SWT 4
U Double Buffering AWT, Swing, JavaFX & SWT 6
J Double-Buffering zu langsam AWT, Swing, JavaFX & SWT 4
D double Buffering abschalten? AWT, Swing, JavaFX & SWT 4
L Double Buffering bei JTable AWT, Swing, JavaFX & SWT 4
CptK Point2D.Double Kurven - Beschriftung und richtiges Anklicken AWT, Swing, JavaFX & SWT 7
CptK Wie funktioniert contains() für Path2D.Double AWT, Swing, JavaFX & SWT 10
B AWT GUI nimmt nur 19 Ziffern an, obwohl Max Wert von Double größer ist AWT, Swing, JavaFX & SWT 7
T Swing Double Click bei Buttons in JTable AWT, Swing, JavaFX & SWT 9
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
S Polygon mit double-Koordinaten AWT, Swing, JavaFX & SWT 2
N Double Buffern von BILDERN AWT, Swing, JavaFX & SWT 6
B Graphics2d drawString mit double Werten? AWT, Swing, JavaFX & SWT 5
O 2D-Grafik Rectangle mit double Werten zeichnen AWT, Swing, JavaFX & SWT 3
M Object[][] in double[][] casten AWT, Swing, JavaFX & SWT 6
A aus einem Textfeld in double parsen AWT, Swing, JavaFX & SWT 10
J JSlider mit Double Werten AWT, Swing, JavaFX & SWT 5
T JTextField nur Double werte eingeben AWT, Swing, JavaFX & SWT 2
A Explicit casting Point2D.Double AWT, Swing, JavaFX & SWT 3
A TableRowSorter für double Werte mit Formatierung AWT, Swing, JavaFX & SWT 3
iLoveTheInternet AWT Rectangle2D.Double intersecs AWT, Swing, JavaFX & SWT 6
R drawString mit double Koordinaten AWT, Swing, JavaFX & SWT 5
L JTextField Umwandeln in double-Werte AWT, Swing, JavaFX & SWT 5
K double / int einlesen? AWT, Swing, JavaFX & SWT 12
L double in JTable formatieren AWT, Swing, JavaFX & SWT 7
P Integer, Double, etc mit getTableCellRendererComponent AWT, Swing, JavaFX & SWT 6
P Double-Werte sortieren mit TableRowSorter AWT, Swing, JavaFX & SWT 2
B JFormattedTextField mit DecimalFormat in ein Double AWT, Swing, JavaFX & SWT 11
S double in String umwandeln AWT, Swing, JavaFX & SWT 6
R Double in der Tabelle statt String und Integer AWT, Swing, JavaFX & SWT 3
Student "Dicke" einer Linie - Line2D.Double AWT, Swing, JavaFX & SWT 12
G Double-Click f. alle Komps UNIX u. WIN verschieden ? AWT, Swing, JavaFX & SWT 5
G Ellipse2D.Double funktioniert nicht AWT, Swing, JavaFX & SWT 3
W SWT - Tree: Problem mit Double-Click expand AWT, Swing, JavaFX & SWT 5
K AWT flackern trotz buffering AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben