在Java中重置Graphics2D对象

Nis*_*rma 8 java swing graphics2d

我在Java中尝试使用Graphics2D.但像往常一样,我被困住了.:P问题是:假设我有这个代码,

Graphics2D g=(Graphics2D)(this.getGraphics()); //Inside a JFrame
g.rotate(Math.PI/8);
g.drawLine(10, 20, 65, 80);

//I want this one and all following lines to be drawn without any rotation
g.drawLine(120, 220, 625, 180);
Run Code Online (Sandbox Code Playgroud)

可能吗???我知道必须有某种方式,但我无法弄清楚.请帮忙.

mre*_*mre 14

你想要做的是恢复变换.

尝试

AffineTransform oldXForm = g.getTransform();
g.rotate(...);
g.drawLine(...);

g.setTransform(oldXForm); // Restore transform
g.drawLine(...);
Run Code Online (Sandbox Code Playgroud)

  • 有时你已经有一个`Graphics`对象,你想暂时改变它的一些状态,然后将它恢复到原始状态.一种方法是创建一个新的`Graphics`对象,它是原始对象的副本,并改为对该副本进行更改.这种技术避免了破坏原始对象的状态,Swing的其他部分可能依赖于该状态.它可能不适用于这种情况,但我认为它不会受到伤害!:) (2认同)
  • 你可以使用affineTransform.setToIdentity(); 而不是使用oldXForm. (2认同)

Aar*_*lla 5

调用getTransform()(给你一个副本),旋转,绘制,然后使用setTransform()来恢复状态。甚至有一个例子的文档setTransform()