2010-05-16 9 views
26

Grafik kullanmaksızın FontMetrics nasıl edinilir? Şimdi bu şekilde yapmak, yapıcı içinde FontMetrics almak istiyorum:Java - Grafiksiz 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

Bunu neden grafiksiz yapmak istersiniz? – tangens

+0

Kendi denetimimi oluşturuyorum ve kurucuda önceden belirlenmiş boyutu ayarlamak istiyorum – piotrek

+6

Bu, başlıksız bir modda, yani yazı tiplerini bitmap'lere işleyen bir komut satırı aracı olduğunda yazı tipi metrikleri almak için kullanışlıdır. –

cevap

21

Hmm ... Bu FontMetrics almak için grafik gerektiğini oldukça mantıklı. Yazı tipi yüksekliği, genişliği vb. Çeşitli ekranlarda farklılık gösterebilir. Bazı Bileşen varsa

, sen almak FontMetrics için kullanabilirsiniz:

component.getFontMetrics(font); 
+0

Thx :) Çalışıyor – piotrek

+0

@amorfis Font boyutunu belirlerken yazı tipi genişliğinin ve yüksekliğinin ekranda göründüğünden emin misiniz? –

17

Hayır mutlaka almak gerekmez/grafik nesne kullanın:

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

şimdi çağırırsanız c.getGraphics(), null döndürür. Bu (kanvas) ayrıca headless mode'da da çalışacaktır.

+2

Bu kabul edilen cevap olmalı. – SimonT