如果我在javafx窗格上放置任何形状(例如Circle),则x / y坐标0,0位于左上角。示例圈,在角落里出现一个:
Circle circle = new Circle(0.0, 0.0, 10);
root.getChildren().add(circle);
现在我有一个基于笛卡尔坐标(x0,y0位于中心)的坐标预先计算的对象列表(圆,线,弧等)。
是否有支持此形状坐标系的Pane实现?如果没有,转换坐标的最简单方法是什么,那么上面的圆圈将被绘制在给定的已经大小的窗格的中心?
感谢任何提示。
答案 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);
应用于组的任何转换,效果或状态都将应用于 该组的所有孩子。
答案 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))
}