我需要找到在屏幕上绘制的文本的宽度。 This thread建议FontMetrics.stringWidth()有时不如FontMetrics.getStringBounds()准确。

有谁知道这是否正确,如果正确,在什么情况下可以看到这种差异? FontMetrics.stringWidth()似乎更经常使用,包括在SwingUtilities.computeStringWidth()中。同样,明显的优点是它不需要Graphics对象,但是它本身与在Graphics对象中定义了抗锯齿和类似设置的事实结合在一起,可以解释为什么FontMetrics.getStringBounds()可能更准确。

最佳答案

getStringBounds具有更多信息,因为它已通过图形。它可以使用它来计算子像素字形位置,并考虑反走样对字形大小的影响。从FontRenderContext的文档中:

由于四舍五入到像素边界,应用程序指定的抗锯齿和分数度量也可能影响字符的大小。

08-07 03:27