Javafx仿射变换

标签 java javafx

我有 2 个矩形,坐标分别为 Rectangle1 (x = 100, y = 100, width = 200, height = 50) 和 Rectangle2 (x = 100, y = 200, width = 200, height = 50)。如何为它们设置仿射变换,以便它们围绕这些矩形的中心旋转(点 x = 200,y = 175)。例如,45 度:

enter image description here

enter image description here

我单独设置旋转

        this.rotate.addListener((obs, old, fresh) -> {
        Rotate groupRotate = new Rotate(rotate.get(),
                this.x.getValue().doubleValue() + this.width.getValue().doubleValue() / 2 ,
                this.y.getValue().doubleValue() + this.height.getValue().doubleValue() / 2);
        for (VObject vObject : children ) {
            vObject.getShape().getTransforms().clear();
            vObject.getShape().getTransforms().add(groupRotate);
        }
    });

但是现在轴也根据旋转而旋转。 enter image description here

可以在不旋转坐标轴的情况下设置矩形的旋转吗?

最佳答案

  1. 将两个矩形添加到公共(public) Node
  2. 创建 Rotate对象
  3. 设置旋转的角度和轴心点
  4. 通过node.getTransforms.add(rotate)应用旋转

编辑:关于移动旋转对象时保留轴的更新问题:将每个旋转对象添加到未旋转的容器中。现在移动这个容器而不是它的内容。

关于Javafx仿射变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53497538/

相关文章:

java - spring data JPA repository 中的解析和查询构建在哪个类?

java - 可扩展的高性能 Java EE 解决方案?

java - Android TaskManager 将显示当前内存使用情况和 CPU 使用情况

java - 当使用设置的默认值启动 Popupwindow 时出现 NullPointerException,否则它可以工作

Javafx tableview 将 cellValueFactory 内的更改绑定(bind)到表 observablelist

JAVA 不兼容类型 : Object cannot be converted to my type

java - 如何让一个特定的调度作业从启动时就开始运行?

Java: Misspell reporter using regex (如何解析拼写错误)

java - 在 JavaFX 中使用 Web 字体

java - 超时后自动关闭对话框并取消响应