我正在使用 Graphics2D.drawString() 在 Graphics2d 中绘制各种字符串。这很好用,但我似乎无法更改字符串的背景颜色;它在渲染时总是使用初始(在本例中为白色)背景颜色。
我可以通过获取字体的边界框来模拟这种效果,在从字体的基线位置和高度挖出的位置根据其大小绘制一个填充的矩形,但这令人不快,至少在我的情况下,不太正确 - 对齐相对于文本的填充矩形的比例略高。
我不能在我的 drawString() 调用之前调用 g2d.setBackground(color) 吗?
我正在使用 Graphics2D.drawString() 在 Graphics2d 中绘制各种字符串。这很好用,但我似乎无法更改字符串的背景颜色;它在渲染时总是使用初始(在本例中为白色)背景颜色。
我可以通过获取字体的边界框来模拟这种效果,在从字体的基线位置和高度挖出的位置根据其大小绘制一个填充的矩形,但这令人不快,至少在我的情况下,不太正确 - 对齐相对于文本的填充矩形的比例略高。
我不能在我的 drawString() 调用之前调用 g2d.setBackground(color) 吗?
我可能弄错了,但是您是否要更改文本颜色或文本背后的背景?
如果您只是更改文本颜色,您所需要的只是
g2d.setColor(Color.RED); //or whatever your desired color is
在您绘制的任何文本之前。
除了在文本后面填充一个矩形之外,我不知道有一种方法可以在文本后面设置背景。
祝你好运!
不,DrawString 不会填充文本背景。相反,您可以在 DrawString 之前绘制一个填充的矩形。正如你所提到的,它并不总是看起来很正确。一种可行的方法是使用 g2d.MeasureString 获取文本矩形,然后将其扩展一点。
也许尝试 setForeground(Color)