35

如何在不使用 Graphics 的情况下获取 FontMetrics ?我想在构造函数中获取 FontMetrics,现在我这样做:

BufferedImage bi = new BufferedImage(5, 5, BufferedImage.TYPE_INT_RGB);
FontMetrics fm = bi.getGraphics().getFontMetrics(font);
int width = fm.stringWidth(pattern);
int height = fm.getHeight();
4

2 回答 2

39

不,您不一定需要获取/使用图形对象:

Font font = new Font("Helvetica",Font.PLAIN,12);
Canvas c = new Canvas();
FontMetrics fm = c.getFontMetrics(font);

如果您现在调用c.getGraphics()它将返回 null。另一方面,画布解决方案也可以在无头模式下工作。

于 2013-08-08T09:56:26.740 回答
22

嗯……你需要图形来获得 FontMetrics 是很合乎逻辑的。字体高度、宽度等在各种显示器上可能有所不同。

如果你有一些组件,你可以用它来获取 FontMetrics:

component.getFontMetrics(font);
于 2010-05-16T12:02:45.100 回答