通常,我会获得一个类似这样的图形实例:
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = img.createGraphics();
但是,在我正在处理的当前项目中,上面的width
和height
变量取决于稍后将绘制到图形实例上的许多文本片段的大小。但是,为了获得正在使用的字体的尺寸,我通常会使用从图形对象中获得的 FontMetrics。
FontMetrics metrics = g.getFontMetrics();
所以,我有一个讨厌的小依赖循环。在我知道文本的大小之前,我无法创建图形对象,并且在我拥有图形对象之前我无法知道文本的大小。一种解决方案是首先创建另一个BufferedImage
/Graphics
对以获得FontMetrics
我需要的实例,但这似乎没有必要。
- 那么,有没有更好的方法呢?
- 还是字体的宽度、高度等属性在某种程度上取决于要在什么(图形、组件...)上绘制文本?