2014-10-11 8 views
0

Я использовал fontmetrics для определения длины и высоты строки, нарисованной на jpanel, но это дало мне неправильные измерения.Java: g.drawString() ширина и высота в пикселях?

Строка я использовал: «Hello World это фантастика»

Для примера: нарисовал строку шрифта по умолчанию; в соответствии с метрикой шрифта размеры были: высота: 24; ширина: 224.

Когда я измерил его, это было на самом деле 148 пикселей в длину и 10 пикселей по высоте. (В основном методом проб и ошибок)

FontMetrics fm = g.getFontMetrics(this.f); 
int Ilength = fm.stringWidth("Hello World this is fantastic"); 
int Iheight = fm.getHeight(); 
System.out.println("height: " + Iheight + "; width: " + Ilength); 

Я интересно, если есть формула или метод в Java, который может обеспечить фактическую высоту и ширину строки в пикселях. Благодаря!

+0

Checkout этот пост http://stackoverflow.com/questions/23729944/java-how-to-visually-center-a-specific-string-not-just-a-font-in-a-rectangle/23730189 # 23730189 –

+0

Вы установили шрифт для графики, прежде чем рисовать строку? 'G.setFont (е)'. –

+0

нет. прямо сейчас я не могу установить шрифт. im только используя значение по умолчанию. – nathannn

ответ

0

У меня также была эта проблема. Попробуйте использовать метод getStringBounds(String,Graphics) вашего объекта FontMetrics.

public Rectangle2D bounds = fm.getStringBounds("Hello World this is fantastic", g); 
int Ilength = (int)bounds.getWidth(); 
int Iheight = (int)bounds.getHeight();