Java - FontMetrics without Graphics

2022-09-01 06:41:34

如何在不使用图形的情况下获得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();

答案 1

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

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

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


答案 2

嗯。。。你需要图形来获取FontMetrics是非常合乎逻辑的。字体高度,宽度等在各种显示器上可能会有所不同。

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

component.getFontMetrics(font);

推荐