D
Danger
Gast
Hallo,
ich habe ein Performance Problem. In meiner Klasse ImageLabel (ein einfaches JLabel, welches ein BufferedImage als Hintergrundbild aufnimmt) gibt es üble Rechenprobleme. Ich habe einen JSlider, mit dem ich das Hintergrundbild transparent machen kann. Leider kommt es bei Betätigen des Sliders zu argen Verzögerungen (je größer width und height von ImageLabel ist, umso mehr ruckelt das ganze beim verschieben). Hier mal die relevante Klasse ImageLabel.
Wer kann mir hierzu helfen. Wie kriege ich das in den Griff :;-(
ich habe ein Performance Problem. In meiner Klasse ImageLabel (ein einfaches JLabel, welches ein BufferedImage als Hintergrundbild aufnimmt) gibt es üble Rechenprobleme. Ich habe einen JSlider, mit dem ich das Hintergrundbild transparent machen kann. Leider kommt es bei Betätigen des Sliders zu argen Verzögerungen (je größer width und height von ImageLabel ist, umso mehr ruckelt das ganze beim verschieben). Hier mal die relevante Klasse ImageLabel.
Wer kann mir hierzu helfen. Wie kriege ich das in den Griff :;-(
Code:
import java.awt.AlphaComposite;
import java.awt.Composite;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import javax.swing.JLabel;
public class BgImageLabel extends JLabel {
private MainPanel layer;
private float transFactor;
private Image bgImage;
private int width, height;
public BgImageLabel(MainPanel layer) {
super();
this.layer = layer;
this.width = layer.getLayerWidth();
this.height= layer.getLayerHeight();
setSize(width, height);
transFactor = 1.0f;
}
public void setBgImage(Image image) {
this.bgImage = image;
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
// g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF);
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, transFactor));
g2.drawImage(bgImage,0,0,width,height, this);
}
public void updateTransparency(float factor) {
this.transFactor = factor;
updateUI();
}
}