当前位置: 首页 > 知识库问答 >
问题:

javafx中的旋转和旋转是如何工作的?

林礼骞
2023-03-14

我在这个网站上看到过关于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时,我完全错了。你们能帮帮我吗?

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

共有1个答案

仲孙思源
2023-03-14

如果替换该行

Group root = new Group(rectangle); 

用以下两行

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

然后以0,10,45,90度的小步长增加您的角度,我认为行为变得更加清晰,这正是我所期望的。

 类似资料:
  • 在Javafx中旋转图像? 我正在写 但是图像不会相对于图像的中心旋转。

  • 我正在玩JavaFX,在类开始(阶段阶段)我有以下代码: 我如何在不旋转轴的情况下旋转它?我发现并尝试了以下方法: 然而,当我使用改变位置x移动图像时,它也会变换轴 它可能与BuffereImage一起工作,但他们使用不同的图形类绘制它,我不知道如何使它一起工作。 编辑:好的,如何只旋转图像而不旋转整个图形上下文? 已解决:谢谢大家的帮助:))我已经用这个解决了它

  • 问题内容: 我想-使用Python和Qt4– 旋转QPushButton(或至少它的文本),使其可以垂直站立。我在网上看过一些文档,但是我从中没多大意义- 它在C语言中,而且我是C文盲。 根据我的阅读,需要重新实现paintEvent()处理程序,实例化和旋转QPainter()。但是我不知道怎么为我只需要的一个QString或QPushButton做到这一点。我假设QPaintEvent会像信号

  • 我在Procesisng中编写了一个程序,它以随机的颜色和旋转来呈现不透明的立方体,但我希望在程序运行的同时连续地旋转每个立方体。这是我目前的代码,

  • 问题内容: 我试图了解四元数旋转的工作原理,我发现了这个迷你教程http://www.julapy.com/blog/2008/12/22/quaternion- rotation/, 但是他做出了一些我不能锻炼的假设,就像我如何“ 简单地通过绕轴旋转矢量来计算绕轴的旋转矢量 ” 。 他如何计算angleDegreesX,angleDegreesY和angleDegreesZ? 有人可以提供可行的

  • 我试着绕着它的中心旋转一个矩形。使用GraphicsContext ie gc将旋转绘制到画布上。这是我的绘图代码。 这会将矩形移动到其中心,然后围绕其左上角点旋转矩形。我试着把两边的长度和宽度减半,但那只会让它飞得到处都是。我数学不好也许这里有更好的人能告诉我我做错了什么。 如果需要的话,我还存储了矩形的所有四个点(角)。 谢了乔