我是一个在Java Swing上旋转和平移形状的命令模式。 翻译和旋转运行很好,但是当我做一个60度的旋转时,旋转然后翻译,翻译遵循新的旋转坐标。 这意味着如果我拖动鼠标,形状从鼠标运动矢量 移动60度间隙有没有简单的解决方案?请大家帮忙,我'击中墙壁这里如何使用AffineTransform旋转并保持原有的坐标系?
我对旋转
public void execute() {
System.out.println("command: rotate " + thetaDegrees);
Iterator iter = objects.iterator();
Shape shape;
while(iter.hasNext()){
shape = (Shape)iter.next();
mt.addMememto(shape);
AffineTransform t = shape.getAffineTransform();
t.rotate(Math.toRadians(thetaDegrees), shape.getCenter().x, shape.getCenter().y);
shape.setAffineTransform(t);
}
}
执行方法,我对翻译
public void execute() {
Iterator iter = objects.iterator();
Shape shape;
while(iter.hasNext()){
shape = (Shape)iter.next();
mt.addMememto(shape);
AffineTransform t = shape.getAffineTransform();
System.out.println("Translation x :"+x + ", Translation y :"+y);
t.translate(x,y);
shape.setAffineTransform(t);
}
}
任何帮助可以执行方法真的很感激