在获取Graphics实例之前获取FontMetrics

时间:2010-05-05 23:54:28

标签: java fontmetrics

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

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

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

FontMetrics metrics = g.getFontMetrics();

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

  • 那么,有更好的方法吗?
  • 或者是这样的情况,Font的宽度,高度等属性在某种程度上取决于要绘制文本的内容(图形,组件......)?

1 个答案:

答案 0 :(得分:0)

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