在Graphics2D上绘制文本

时间:2013-10-31 17:59:01

标签: java size java-2d

我已经制作了一个窗口并使用双缓冲区绘制它。问题是如果我在y = 0时使用Graphics2D绘制一些文本,它就不会出现在屏幕上。我试图将BufferedImage降低,但这没有帮助,并在窗口顶部留下一个白色区域。

非常感谢提前

1 个答案:

答案 0 :(得分:3)

这是因为text is measured g.drawString("Hello", 0, 0);将开始使用"H"处的第一个字母(0,0)的基线绘制字符串。这意味着在(x,0)处绘图将始终至少有一些文本不在视野范围内。如果您希望文本的顶角位于(x,y),则必须测量字体的高度并将其用作偏移量

public static void drawStringTopLeft(Graphics2D g, String s, int x, int y) {
    FontMetrics fm = g.getFontMetrics(g.getFont());
    int yOffset = fm.getAscent();
    g.drawString(s, x, y+yOffset);
}