我使用此方法測量Swing圖形中的文本邊界 但它並未覆蓋整個文本。 它在測量身高時特別不好... 當我輸入英文文本時它會變得更好,但我應該使用波斯語字體。在Swing Graphics2d中測量文本邊界
private Rectangle getStringBounds(Graphics2D g2, String str,
float x, float y)
{
FontRenderContext frc = g2.getFontRenderContext();
GlyphVector gv = g2.getFont().createGlyphVector(frc, str);
return gv.getPixelBounds(null, x, y);
}
我這是怎麼繪製文本和邊界:
g.drawString(text, x-textBounds.width/2, y+textBounds.height/2);
g.drawRect(x-textBounds.width/2, y-textBounds.height/2, textBounds.width, textBounds.height);
你錯過了偏移。你嘗試過使用'gv.getVisualBounds'嗎?你是怎麼顯示矩形/文本的?你能否包括一段你想修改的文字? – matt
@matt「你怎麼顯示矩形/文本?」我編輯了這篇文章並添加了我做到的方式......「您是否嘗試過使用gv.getVisualBounds?」 gv.getVisualBounds也會得到錯誤的高度並且存在相同的問題... –
您可以添加一段文本,對於我來說,獲取可視邊界封裝了包括文字在內的文字,該文字低於基線。 – matt