管理Graphics2D设置的正确方法是什么?

时间:2015-04-02 17:47:21

标签: java

当我暂时更改Graphics2D对象中的设置时,是否需要保存并恢复原始设置?例如:

Color saveColor = graphicsContext.getColor();
graphicsContext.setColor( Color.RED );  // is this code...
graphicsContext.performSomeOperation();
graphicsContext.setColor( saveColor );  // ... necessary?

我看过的所有示例都只是设置颜色并执行操作,没有保存/恢复逻辑。

3 个答案:

答案 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或者下一个操作不依赖于当前设置的颜色(例如设置颜色本身)。

我不知道你在看哪些例子,但也许那些人更多地关注操作本身而不是潜在的副作用。但那只是猜测。