我需要找到在屏幕上绘制的文本的宽度。This thread建议FontMetrics.stringWidth()有时不会像FontMetrics.getStringBounds()那样准确。
有没有人知道这是不是正确的,如果是正确的,这种差异在什么情况下是可见的?FontMetrics.stringWidth()似乎使用得更频繁,包括在SwingUtilities.computeStringWidth()中。此外,明显的优点是它不需要图形对象,但这一点本身结合在图形对象中定义了抗锯齿和类似设置的事实可能解释了为什么FontMetrics.getStringBounds()可能更准确。
发布于 2011-08-15 10:05:25
getStringBounds有更多的信息要处理,因为它被传递给了Graphics。它可以用它来计算子像素字形的位置,并说明反走样对字形大小的影响。来自FontRenderContext的文档
由于四舍五入到像素边界,应用程序指定的
抗锯齿和分数度量也会影响字符的大小。
发布于 2011-08-15 10:00:33
我想答案就在你的问题里。在javadoc中:
stringWidth
请注意,此方法返回的总前进宽度没有考虑呈现上下文。因此,抗锯齿和分数指标提示可能会影响预付款的价值。启用抗锯齿和分数度量提示时,请使用getStringBounds(字符串、图形)而不是此方法。字符串的前进不一定是其字符前进的总和。
https://stackoverflow.com/questions/7061060
复制相似问题