如何在Java中没有Graphics
实例的情况下获得文本超前(stringWidth)?
在doc examples中,stringWidth()
取自FontMetrics
,而FontMetrics
取自Graphics
。
是否可以在没有Graphics
的情况下获得相同的内容?
在下面的注释中说,Graphics
是必需的,因为它包含FontRenderContext
。但我有FontRenderContext
,没有Graphics
。
所以,假设我FontRenderContext
没有Graphics
。我如何获得stringWidth()
呢?
答案 0 :(得分:5)
虽然"直接构建的FontRenderContext
很可能不会代表任何实际的图形设备,并可能导致意外或不正确的结果,"您可以从TextLayout
的实例中获取有用的指标,如here和here所示。
FontRenderContext frc = new FontRenderContext(null, false, false);
TextLayout layout = new TextLayout(text, font, frc);
System.out.println(layout.getBounds());