我意识到大多数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();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)