2010-05-16 3 views
26

Как получить FontMetrics без использования графики? Я хочу, чтобы получить FontMetrics в конструкторе, теперь я делаю это так:Java - FontMetrics без графики

BufferedImage bi = new BufferedImage(5, 5, BufferedImage.TYPE_INT_RGB); 
FontMetrics fm = bi.getGraphics().getFontMetrics(font); 
int width = fm.stringWidth(pattern); 
int height = fm.getHeight(); 
+0

Почему вы хотите сделать это без графики? – tangens

+0

Я создаю свой собственный элемент управления, и я хочу установить preffred size в конструкторе – piotrek

+6

Это полезно для получения метрик шрифта, когда он находится в режиме безглавых, то есть инструмент командной строки, который обрабатывает шрифты в растровые изображения. –

ответ

21

Хм ... Вполне логично, что вам нужно, чтобы получить графики FontMetrics. Высота шрифта, ширина и т. Д. Могут различаться на разных дисплеях.

Если у вас есть какой-то компонент, вы можете использовать его для получения FontMetrics:

component.getFontMetrics(font); 
+0

Thx :) Он работает – piotrek

+0

@amorfis Вы уверены, что ширина и высота шрифта зависят от отображения, пока я указал размер шрифта? –

17

Нет вы не обязательно должны получить/использовать графический объект:

Font font = new Font("Helvetica",Font.PLAIN,12); 
Canvas c = new Canvas(); 
FontMetrics fm = c.getFontMetrics(font); 

Если теперь вы звоните c.getGraphics() он будет возвращать null. Этот (холст) также будет работать в headless mode.

+2

Это должен быть принятый ответ. – SimonT