我是一個在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);
}
}
任何幫助可以執行方法真的很感激