【问题标题】:Add shapes to JavaFX pane with cartesian coordinates使用笛卡尔坐标将形状添加到 JavaFX 窗格
【发布时间】:2015-12-08 16:10:49
【问题描述】:

如果我在 javafx 窗格上放置任何形状(例如圆形),x/y 坐标 0,0 位于左上角。示例圆圈,在角落中显示一个:

Circle circle = new Circle(0.0, 0.0, 10);
root.getChildren().add(circle);

现在我确实有一个对象列表(圆、线、弧等),这些对象是使用基于笛卡尔坐标(x0,y0 位于中心)的坐标预先计算的。

是否有任何 Pane 实现支持此形状坐标系?如果不是,那么转换坐标的最简单方法是什么,以便在给定的已确定大小的窗格的中心绘制上圆?

感谢任何提示。

【问题讨论】:

    标签: java javafx


    【解决方案1】:

    您可以将所有形状添加到Group,然后相应地翻译该组,如下所示:

    Group group = new Group();
    Pane pane = new Pane(group);
    
    pane.setPrefWidth(300);
    pane.setPrefHeight(300);
    
    group.getChildren().add(new Circle(0, 0, 10));
    group.setTranslateX(pane.getPrefWidth() / 2);
    group.setTranslateY(pane.getPrefHeight() / 2);
    

    Group:

    应用于组的任何变换、效果或状态都将应用于 该组的所有孩子。

    【讨论】:

    • 另请注意,如果您想使用传统的数学坐标(其中y随着您的上升而不是下降而增加),您可以使用group.setScaleY(-1);
    【解决方案2】:

    我能想到的最直接的解决方案是封装 JavaFX 的 Circle

    // Pseudocode
    MyCircle(Parent parent, int x, int y, int radius)
    {
         parentCenterX = parent.width / 2
         parentCenterY = parent.height / 2
    
         parent.getChildren().add(new Circle(parentCenterX + x, parentCenterY + y, radius *2))
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多