Hallo,
ich habe momentan ein kleines Problem mit Bildern.
Ich habe eine eigene Komponente von JComponent abgeleitet und zeichne deren Inhalt schön brav in der überschriebenen paintComponent-Funktion
voilà:
Tatsache ist, dass die GUI sehr träge ist (neuzeichnen dauert ca. 600-800 ms).
Wenn ich allerdings dieses "drawImage" auskommentiere, dann läuft die GUI mit normaler Geschwindigkeit.
Folglich liegt's wohl am "drawImage".
Das Bild was da gezeichnet wird ist bereits geladen und hat eine Größe von läppischen 700 x 450 Px.
Warum ist das so langsam? Mache ich irgendetwas falsch oder ist das die Trägheit von Java?
Wenn es diese ist, gibt es dann eine Möglichkeit das Zeichnen irgendwie "auszulagern", sodass der Rest der GUI nicht drauf wartet?
Ich weiß nicht ob das von Belang ist: Die Komponente steckt in einem ScrollPane. Sie ist allerdings auch langsam, wenn das ScrollPane nicht aktiv ist, d.h. keine ScrollBalken angezeigt werden.
Mfg
Julian
ich habe momentan ein kleines Problem mit Bildern.
Ich habe eine eigene Komponente von JComponent abgeleitet und zeichne deren Inhalt schön brav in der überschriebenen paintComponent-Funktion
voilà:
Code:
protected void paintComponent(final Graphics g) {
Graphics2D g2 = (Graphics2D) g.create();
worldX = (this.getBounds().width / 2) - (spielplanImage.getWidth() / 2);
worldY = (this.getBounds().height / 2) - (spielplanImage.getHeight() / 2);
g2.setColor(this.getBackground());
g2.fillRect(0, 0, this.getBounds().width, this.getBounds().height);
g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);
Rectangle imageRect =
new Rectangle(worldX, worldY, spielplanImage.getWidth(), spielplanImage.getHeight());
if (imageRect.intersects(g2.getClipBounds())) {
g2.drawImage(spielplanImage, worldX, worldY, this);
}
paintConnections(g2); //Ein paar Striche noch draufgepainted
paintInseln(g2); //Ein paar Kringel noch drauf
g2.dispose();
}
Tatsache ist, dass die GUI sehr träge ist (neuzeichnen dauert ca. 600-800 ms).
Wenn ich allerdings dieses "drawImage" auskommentiere, dann läuft die GUI mit normaler Geschwindigkeit.
Folglich liegt's wohl am "drawImage".
Das Bild was da gezeichnet wird ist bereits geladen und hat eine Größe von läppischen 700 x 450 Px.
Warum ist das so langsam? Mache ich irgendetwas falsch oder ist das die Trägheit von Java?
Wenn es diese ist, gibt es dann eine Möglichkeit das Zeichnen irgendwie "auszulagern", sodass der Rest der GUI nicht drauf wartet?
Ich weiß nicht ob das von Belang ist: Die Komponente steckt in einem ScrollPane. Sie ist allerdings auch langsam, wenn das ScrollPane nicht aktiv ist, d.h. keine ScrollBalken angezeigt werden.
Mfg
Julian