旋转和旋转在Javafx中如何工作?

时间:2019-07-15 22:03:49

标签: javafx

我已经看到了这个网站上有关javafx旋转的问题,但我似乎并不了解。这是一些代码:

    import javafx.application.Application; 
    import javafx.scene.Group; 
    import javafx.scene.Scene; 
    import javafx.scene.paint.Color; 
    import javafx.scene.shape.Rectangle; 
    import javafx.scene.transform.Rotate; 
    import javafx.scene.transform.Scale; 
    import javafx.scene.transform.Translate; 
    import javafx.stage.Stage; 

    public class TransformationsExample extends Application { 
        @Override 
        public void start(Stage stage) { 
            Rectangle rectangle = new Rectangle(50, 50, 100, 75);      
            rectangle.setFill(Color.BURLYWOOD);      
            rectangle.setStroke(Color.BLACK);     
            Rotate rotate = new Rotate();    
            rotate.setAngle(90);         
            rotate.setPivotX(150); 
            rotate.setPivotY(225); 
            rectangle.getTransforms().addAll(rotate);              
            Group root = new Group(rectangle);  
            Scene scene = new Scene(root, 1400, 780);      
            stage.setTitle("Transformations"); 
            stage.setScene(scene); 
            stage.show(); 
        }      
        public static void main(String args[]){ 
            launch(args); 
        } 
    }

为什么当我改变角度时,矩形开始出现在随机位置?例如,当我将角度设置为180时,矩形出现在中间。我的理解是矩形以指定的角度围绕X:150和Y:225移动。但是,当我将角度设置为180度时,我是完全错误的。你们可以帮我吗?

编辑:在阅读并看到回答该问题的代码时,我想我发现了一个新问题。如何设置与ivotX和pivotY的枢轴距离?

Edit2:这适用于用户@Slaw。我希望知道如何找到/设置X? X = ?

1 个答案:

答案 0 :(得分:1)

如果您替换行

Group root = new Group(rectangle); 

有以下两行

Circle pivot = new Circle(150, 225, 5, Color.BLACK);
Group root = new Group(rectangle, pivot); 

然后以0、10、45、90度的小步长增加角度,这种行为我想起来更加清晰,这正是我所期望的。