我使用此方法测量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