使用笛卡尔坐标向JavaFX窗格添加形状

时间:2015-12-08 16:10:50

标签: java javafx

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

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

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

是否有支持此形状坐标系的Pane实现?如果没有,转换坐标的最简单方法是什么,那么上面的圆圈将被绘制在给定的已经大小的窗格的中心?

感谢任何提示。

2 个答案:

答案 0 :(得分:2)

您可以将所有形状添加到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

  

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

答案 1 :(得分:0)

我能想到的最直接的解决方案是围绕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))
}