2013-10-31 74 views
0

我製作了一個窗口並使用雙緩衝區對其進行繪製。問題是,如果我在y = 0處使用Graphics2D繪製一些文本,它不會出現在屏幕上。我試圖將BufferedImage渲染下來,但這並沒有幫助,並在窗口頂部留下白色區域。在Graphics2D上繪圖文本

提前感謝

回答

3

這是因爲如何text is measuredg.drawString("Hello", 0, 0);將開始(0,0)繪製的第一個字母"H"基線的字符串。這意味着在(x,0)處的繪圖總是至少有一些文字不在視圖中。如果你想要的文字與它在(x,y)右上角被渲染,你將不得不衡量字體的高度,並用它作爲偏移

public static void drawStringTopLeft(Graphics2D g, String s, int x, int y) { 
    FontMetrics fm = g.getFontMetrics(g.getFont()); 
    int yOffset = fm.getAscent(); 
    g.drawString(s, x, y+yOffset); 
} 
+0

THANK YOU SO MUCH !!!!!!!!!! !!!!!!!!!!!!!!!!!!!我完全忘了:) – 2851999

+0

不客氣 – arynaq