如何在javafx中获取矩形的中心坐标?

时间:2019-01-01 10:27:27

标签: javafx

有人知道如何在javafx中获取矩形的中心坐标吗? 有没有一种方法或算法,因为我想知道矩形旋转和移动时的中心位置。 我无法在网络上找到解决方案,因此希望你们中的一个可以帮助我。

2 个答案:

答案 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();
}