Hej!
Ich versuche mit folgendem Codeschnipsel ein BufferedImage zu erstellen und einen Text darauf zu zeichnen. Das Bild soll genau so groß sein, wie der Text wenn er gezeichnet wird. Letzeres funktioniert auch wunderbar nur wenn ich versuche das erzeugte BufferedImage zu zeichnen (über drawImage(...)) kommt nur ein schwarzer Kasten. Wenn ich den Typ von TYPE_INT_RGB auf TYPE_INT_ARGB wird gar nichts gezeichnet.
Edit: Vielleicht passt was nicht mit dem ImageObserver. Ich poste auch gerne ein paar Klassen...
Ich versuche mit folgendem Codeschnipsel ein BufferedImage zu erstellen und einen Text darauf zu zeichnen. Das Bild soll genau so groß sein, wie der Text wenn er gezeichnet wird. Letzeres funktioniert auch wunderbar nur wenn ich versuche das erzeugte BufferedImage zu zeichnen (über drawImage(...)) kommt nur ein schwarzer Kasten. Wenn ich den Typ von TYPE_INT_RGB auf TYPE_INT_ARGB wird gar nichts gezeichnet.
Code:
public TextSprite(SpriteGroup top, double x, double y, String text, int size, int style) {
super(top, x, y, text);
Font font = new Font(Font.SANS_SERIF, style, size);
FontMetrics fontMetrics = Toolkit.getDefaultToolkit().getFontMetrics(font);
int stringWidth = fontMetrics.stringWidth(text);
int stringHeight = fontMetrics.getMaxAscent();
BufferedImage bImg = new BufferedImage(fontMetrics.stringWidth(text), fontMetrics.getMaxAscent(),
BufferedImage.TYPE_INT_ARGB);
Graphics2D g = bImg.createGraphics();
g.setClip((int)x, (int)y, stringWidth, stringHeight);
g.clearRect((int)x, (int)y, stringWidth, stringHeight);
g.setFont(font);
g.setColor(Color.BLACK);
setImage(bImg);
}
Code:
public void render(Graphics g) {
if (img != null) {
g.setClip((int) x, (int) y, img.getWidth(imgOverser), img.getHeight(imgOverser));
g.drawImage(img, (int) x, (int) y, imgOverser);
}
}
Code:
public void setImage(BufferedImage img) {
this.img = img;
imgOverser = new MyImageObserver();
bounds = new BoundingBox(x, y, img.getWidth(imgOverser),img.getHeight(imgOverser));
width = img.getWidth(imgOverser);
height = img.getHeight(imgOverser);
}
Edit: Vielleicht passt was nicht mit dem ImageObserver. Ich poste auch gerne ein paar Klassen...