Folgende Methode habe ich – mal wieder –einem Buch entnommen:
Was ich mich nun Frage ist, wieso eigentlich das BufferedImage-Objekt zurückgegeben werden kann, obwohl es doch eigentlich nur kreiert wird, um ein Graphics2D-Objekt zu liefern (Zeile 16). Müsste nicht im Prinzip das Graphics2D-Obejtk zurückgegeben werden? Oder wo bleibt dies ab?
Code:
public static BufferedImage makeMessageImage(String message,
String fontName,
int fontSize)
{
Font font = new Font(fontName, Font.PLAIN, fontSize);
FontMetrics metrics = getFontMetrics(font);
int messageWidth = metrics.stringWidth(message);
int baselineX = messageWidth/10;
int width = messageWidth + 2*(baselineX + fontSize);
int heigth = fontSize*7/2;
int baselineY = heigth*8/10;
BufferedImage messageImage =
new BufferedImage(width, heigth,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = (Graphics2D)messageImage.getGraphics();
g2d.setBackground(Color.white);
g2d.clearRect(0, 0, width, heigth);
g2d.setFont(font);
g2d.translate(baselineX, baselineY);
g2d.setPaint(Color.lightGray);
AffineTransform origTransform = g2d.getTransform();
g2d.shear(-0.95, 0);
g2d.scale(1, 3);
g2d.drawString(message, 0, 0);
g2d.setTransform(origTransform);
g2d.setPaint(Color.black);
g2d.drawString(message, 0, 0);
return messageImage;
}
Was ich mich nun Frage ist, wieso eigentlich das BufferedImage-Objekt zurückgegeben werden kann, obwohl es doch eigentlich nur kreiert wird, um ein Graphics2D-Objekt zu liefern (Zeile 16). Müsste nicht im Prinzip das Graphics2D-Obejtk zurückgegeben werden? Oder wo bleibt dies ab?