在Java中像素字符串长度(String length in pixels in Java)

2019-07-03 18:15发布

有没有一种方法来计算像素的字符串的长度,给予一定的java.awt.Font对象,不使用任何GUI组件?

Answer 1:

不使用任何GUI组件?

这取决于你的意思在这里。 我假设你的意思是你想这样做没有收到HeadlessException

最好的办法是用BufferedImage 。 据我所知,这不会抛出HeadlessException

Font font = ... ;
BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
FontMetrics fm = img.getGraphics().getFontMetrics(font);
int width = fm.stringWidth("Your string");

除了使用这样的事情,我不认为你可以。 你需要为了创建一个图形上下文FontMetrics ,给你的字体大小信息。



Answer 2:

您可以使用Graphics2D对象来获取字体边界(包括宽度):

Graphics2D g2d = ...
Font font = ...
Rectangle2D f = font.getStringBounds("hello world!", g2d.getFontRenderContext());

但是,这取决于你将如何得到Graphics2D对象(例如从Image )。



Answer 3:

这给出了(137.0,15.09375)输出我。 我不知道单位是什么,但可以肯定的看起来比例正确,不直接使用的Graphics2D。

    Font f = new Font("Ariel", Font.PLAIN, 12);
    Rectangle2D r = f.getStringBounds("Hello World! Hello World!", new FontRenderContext(null, RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT, RenderingHints.VALUE_FRACTIONALMETRICS_DEFAULT));
    System.out.println("(" + r.getWidth() + ", " + r.getHeight() + ")"); 


文章来源: String length in pixels in Java