有人知道如何在javafx中获取矩形的中心坐标吗? 有没有一种方法或算法,因为我想知道矩形旋转和移动时的中心位置。 我无法在网络上找到解决方案,因此希望你们中的一个可以帮助我。
答案 0 :(得分:1)
您可以像这样计算矩形的中心:
"lint": "eslint src --fix",
或者,如果您将矩形表示为2个点(两个相对的角),则必须使用以下公式:
center.x = position.x + width / 2
center.y = position.y + height / 2
也: 快速的Google产生How to find the Center Coordinate of Rectangle?作为第一个结果...
答案 1 :(得分:1)
使用localToParent
方法将矩形的中心转换为父级的坐标系。
Rectangle
在本地坐标中的中心是
x = rect.x + rect.width/2
y = rect.y + rect.height/2
示例
@Override
public void start(Stage primaryStage) throws Exception {
Rectangle rect = new Rectangle(50, 50, 100, 100);
Translate translate = new Translate();
Rotate rotate = new Rotate(0, 0, 0);
rect.getTransforms().addAll(translate, rotate);
Circle circle = new Circle(5, Color.RED);
AnimationTimer timer = new AnimationTimer() {
@Override
public void handle(long now) {
double d = now / 5_000_000_000d;
rotate.setAngle(d * 360);
translate.setX((d % 2) * 300);
translate.setY((d % 3) * 150);
// set circle center to coordinates of rect's center
Point2D center = rect.localToParent(rect.getX() + 0.5 * rect.getWidth(),
rect.getY() + 0.5 * rect.getHeight());
circle.setCenterX(center.getX());
circle.setCenterY(center.getY());
}
};
Pane root = new Pane(rect, circle);
timer.start();
Scene scene = new Scene(root, 800, 800);
primaryStage.setScene(scene);
primaryStage.show();
}