2014-10-11 127 views
0

我用fontmetrics來確定繪製到jpanel的字符串的長度和高度,但它給了我不正確的測量。Java:g.drawString()寬度和高度以像素爲單位?

我使用的字符串是:「你好世界,這是夢幻般的」

例如:一個畫了默認字體的字符串;根據字體指標的尺寸是:身高:24;當我測量它時,它實際上是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

結帳這篇文章http://stackoverflow.com/questions/23729944/java-how-to-visually-center-a-specific-string-not-just-a-font-in-a-rectangle/23730189#23730189 – 2014-10-11 06:34:02

+0

您是否在繪製字符串之前設置了圖形的字體? 'g.setFont(F)'。 – 2014-10-11 06:44:07

+0

沒有。現在我還沒有設置字體。即時通訊只是使用默認。 – nathannn 2014-10-11 07:23:42

回答

0

我也有這個問題。嘗試使用FontMetrics對象的方法getStringBounds(String,Graphics)

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