我意识到大部分的
Java代码覆盖了paint或paintComponent,大部分都没有恢复图形对象的旧状态,在他们改变了图形对象的状态之后.例如,setStroke,setRenderingHint …
我想知道在从方法返回之前是否是恢复旧状态的图形对象是一个好的做法.例如
public void paintComponent(Graphics g) { super.paintComponet(g); Stroke oldStroke = g.getStroke(); g.setStroke(newStroke); // Do drawing operation. g.setStroke(oldStroke); }
这是一个好习惯吗?还是完成了?
解决方法
你不应该改变所传递的Graphics对象,而是在你所处理的副本上执行所有的图形操作.没有必要重新设置状态.
public void paintComponent(Graphics g1) { super.paintComponent(g1); final Graphics2D g = (Graphics2D)g1.create(); try { // ...Whole lotta drawing code... } finally { g.dispose(); } }