我正在尝试使用 Java 中的 Graphics2D
类编写需要绘制许多字符串的应用程序。我需要获取每个 String 对象的大小(以计算每个字符串的确切位置)。
字符串太多,应该在调用 paint()
方法之前完成,并且只在我的程序开始时完成一次(这样我就没有 Graphics2D
对象)。我知道有一个方法 Font.getStringBounds()
但它需要一个 FontRenderContext
对象作为参数。
当我尝试创建自己的对象时:
FontRenderContext frc = new FontRenderContext(MyFont.getTransform(), true, true)
然后获取字符串边界 我得到的大小总是与使用 paint()< 中的
。差异不大(大约 1E-3),但我想知道为什么会有任何差异?Graphics2D.getFontRenderContext()
方法获取 FontRenderContext
时不同
但是,有没有更好更安全的方法来获取字符串的大小?
提前感谢您的帮助!
最佳答案
尝试使用 FontMetrics类(class); stringWidth方法返回字符串的大小。 一个例子:
JComponent c = getSomeKindOfJComponent();
FontMetrics fm = c.getFontMetrics(c.getFont()); // or another font
int strw = fm.stringWidth("My text");
关于java - 在 java 中获取字符串大小(没有可用的 Graphics 对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4914145/