gpt4 book ai didi

java - FontMetrics 返回错误的高度

转载 作者:行者123 更新时间:2023-11-29 07:35:24 25 4
gpt4 key购买 nike

我想获得面板上字符串的准确高度(以像素为单位)。所以我写了一个程序来绘制字符串,然后在它周围绘制一个矩形。

使用 FontMetrics 我使用 getStringBounds 方法获取封闭矩形。

但是看起来不对:

enter image description here

我希望矩形能完美地包围我的文本,但顶部有空间(左右两边都有一点空间)。为什么会给我这个结果?

这是我的代码:

public class Test extends JPanel {

@Override
protected void paintComponent(Graphics g) {

Font font = new Font("Arial", Font.PLAIN, 60);
g.setFont(font);

FontMetrics fm = this.getFontMetrics(font);

String str = "100dhgt";
Rectangle2D rect = fm.getStringBounds(str, g);

int x = 5;
int y = 100;

g.drawRect(x, y - (int)rect.getHeight(), (int)rect.getWidth(), (int)rect.getHeight());
g.drawString(str, x, y);
}

public static void main(String[] args) {
JFrame f = new JFrame();

Test test = new Test();
f.add(test);
f.setVisible(true);
f.setSize(400, 400);
}

}

最佳答案

关于你的矩形,你必须考虑字体的下降(线下方多远)

g.drawString(str, x, y - fm.getDescent());

另请注意,字体高度通常会考虑某种行距。在这种情况下,fm.getDescent() + fm.getAscent() = 68 而 fm.getHeight() = 70

关于java - FontMetrics 返回错误的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36477433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com