我用这种绘画方法画一个条形图,条形图是深灰色。我只想知道当我来回变换时如何恢复颜色?
是否有Color.DEFAULT或类似的东西? 或者我应该在循环之前设置setColor
public void paint(Graphics g) {
super.paint(g);
for (int i = 0, k = 0; i < barsArray.length; i++, k += getWidth()
/ barsArray.length) {
g.fillRect(k + 5, getHeight() - barsArray[i] * 15, getWidth()
/ barsArray.length - 1, getHeight() * 2);
}
}
答案 0 :(得分:7)
您可以在更改之前使用g.getColor()
。
可能不适合覆盖paint
,相反,您应该考虑覆盖从paintComponent
JComponent
请查看Performing Custom Painting了解详情
答案 1 :(得分:0)
您不应该“只是setColor ...”,因为您作为参数接收的Graphics对象由组件层次结构共享到包含它的窗口。
您有两种选择(基本上):
Color oldColor = g.getColor();
// do something with g
g.setColor(oldColor);
Graphics gCopy = g.create();
// do something with gCopy
gCopy.dispose();