0

我制作了一个窗口并使用双缓冲区绘制到它。问题是如果我在 y = 0 处使用 Graphics2D 绘制一些文本,它不会出现在屏幕上。我试图将 BufferedImage 渲染得更低,但这无济于事,并在窗口顶部留下了一个白色区域。

提前谢谢了

4

1 回答 1

3

这是因为文本的测量 方式将开始以第一个字母的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);
}
于 2013-10-31T18:29:26.640 回答