2015-09-28 10 views
1

Как получить текст вперед (stringWidth) без экземпляра в Java?Как получить текст вперед (stringWidth) без Графика в Java?

В doc examples, stringWidth() берется из FontMetrics, в то время как FontMetrics берется из Graphics.

Можно ли получить то же самое без Graphics?

В примечаниях ниже сказано, что требуется Graphics, так как он содержит FontRenderContext. Но у меня есть FontRenderContext, просто нет Graphics.

Итак, предположим, у меня есть FontRenderContext без Graphics. Как мне получить stringWidth()?

+1

Почему вы "должны FontRenderContext без графики"? Это звучит странно. Можете ли вы разместить свой код? – Tunaki

+1

По существу, вы не можете. По необходимости вам нужен контекст «Graphics», поскольку он определяет свойства, которым будет отображаться шрифт, и будет влиять на то, как выполняются вычисления. – MadProgrammer

+0

@Tunaki. Я создал frc с помощью нового FontRenderContext (null, isAntiAliased, usesFractionalMetrics) ' –

ответ

5

В то время как «A FontRenderContext который непосредственно сконструированный, скорее всего, не представляет какое-либо фактическое графическое устройства, и может привести к неожиданным или неправильным результатам,» вы можете получить полезные метрики от экземпляра TextLayout, как показан here и here.

FontRenderContext frc = new FontRenderContext(null, false, false); 
TextLayout layout = new TextLayout(text, font, frc); 
System.out.println(layout.getBounds()); 

image

+3

См. Также этот [подход] (http://stackoverflow.com/q/10677876/230513). – trashgod

 Смежные вопросы

  • Нет связанных вопросов^_^