2010-05-16 12 views
26

¿Cómo obtener FontMetrics sin usar Graphics? Quiero llegar FontMetrics en el constructor, ahora lo hago de esta manera:Java - FontMetrics sin gráficos

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

¿Por qué quieres hacer esto sin gráficos? – tangens

+0

Creo mi propio control, y quiero establecer el tamaño prefijado en el constructor – piotrek

+6

Esto es útil para obtener métricas de fuentes cuando está en un modo sin cabeza, es decir, una herramienta de línea de comandos que procesa fuentes para mapas de bits. –

Respuesta

21

Hmm ... Es bastante lógico que necesita gráficos para obtener FontMetrics. La altura, el ancho, etc. de la fuente pueden diferir en varias pantallas.

Si tiene algún componente, puede utilizarlo para conseguir FontMetrics:

component.getFontMetrics(font); 
+0

Thx :) Funcionando – piotrek

+0

@amorfis ¿Está seguro de que el ancho y la altura de la fuente dependen de la visualización mientras he especificado el tamaño de fuente? –

17

No, no necesariamente tienen que obtener/usan objeto gráfico:

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

Si ahora llama c.getGraphics() devolverá nulo. Este (lienzo) también funcionará en headless mode.

+2

Esta debería ser la respuesta aceptada. – SimonT