当我暂时更改Graphics2D对象中的设置时,是否需要保存并恢复原始设置?例如:
Color saveColor = graphicsContext.getColor();
graphicsContext.setColor( Color.RED ); // is this code...
graphicsContext.performSomeOperation();
graphicsContext.setColor( saveColor ); // ... necessary?
我看过的所有示例都只是设置颜色并执行操作,没有保存/恢复逻辑。
答案 0 :(得分:1)
Graphics2D safeCopy = yourCurrentGraphics.create();
safeCopy.setColor(Color.BLUE);
drawBlueThings(safeCopy);
safeCopy.dispose();
这样,在更改复制参数之前,yourCurrentGraphics将处于完全相同的状态。
答案 1 :(得分:0)
根据我的经验,你应该保存并恢复仿射变换设置(因为相同的图形对象将用于绘制多个组件),但是通常可以设置其他设置而不进行恢复(无论如何它们都会被覆盖)。 / p>
答案 2 :(得分:0)
来自docs(由我强调):
public abstract void setColor(Color c)
将此图形上下文的当前颜色设置为指定的颜色。 所有 使用此图形上下文的后续图形操作使用此 指定颜色。
所以是的,你应该重置它,除非你确定以后不会再使用graphicsContext或者下一个操作不依赖于当前设置的颜色(例如设置颜色本身)。
我不知道你在看哪些例子,但也许那些人更多地关注操作本身而不是潜在的副作用。但那只是猜测。