1

通常,我会获得一个类似这样的图形实例:

BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = img.createGraphics();

但是,在我正在处理的当前项目中,上面的widthheight变量取决于稍后将绘制到图形实例上的许多文本片段的大小。但是,为了获得正在使用的字体的尺寸,我通常会使用从图形对象中获得的 FontMetrics。

FontMetrics metrics = g.getFontMetrics();

所以,我有一个讨厌的小依赖循环。在我知道文本的大小之前,我无法创建图形对象,并且在我拥有图形对象之前我无法知道文本的大小。一种解决方案是首先创建另一个BufferedImage/Graphics对以获得FontMetrics我需要的实例,但这似乎没有必要。

  • 那么,有没有更好的方法呢?
  • 还是字体的宽度、高度等属性在某种程度上取决于要在什么(图形、组件...)上绘制文本?
4

1 回答 1

0

也许您可以尝试从其他地方获取 Graphics 实例。例如,将在其上绘制图像的面板。然后,您可以使用该 Graphic 实例获取 FontMetrics 实例。

于 2010-05-06T03:07:13.200 回答