2010-05-16 22 views
26

Comment obtenir FontMetrics sans utilisation Graphiques? Je veux FontMetrics dans le constructeur, maintenant je fais de cette façon:Java - FontMetrics sans graphiques

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

Pourquoi voulez-vous faire cela sans graphiques? – tangens

+0

Je crée mon propre contrôle et je veux définir la taille prédéfinie dans le constructeur – piotrek

+6

Ceci est utile pour obtenir des métriques de police en mode sans tête, c'est-à-dire un outil de ligne de commande qui traite les polices en bitmaps. –

Répondre

21

Hmm ... Il est tout à fait logique que vous avez besoin des graphiques pour obtenir FontMetrics. La hauteur de la police, la largeur, etc. peuvent différer selon les écrans.

Si vous avez des composants, vous pouvez l'utiliser pour obtenir FontMetrics:

component.getFontMetrics(font); 
+0

Thx :) Cela fonctionne – piotrek

+0

@amorfis Etes-vous sûr que la largeur et la hauteur de la police dépendent de l'affichage alors que j'ai spécifié la taille de police? –

17

Non, vous ne devez pas nécessairement pour obtenir/utiliser l'objet graphique:

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

Si vous appelez maintenant c.getGraphics() il renverra null. Ceci (toile) fonctionnera également dans headless mode.

+2

Cela devrait être la réponse acceptée. – SimonT