首页 > 解决方案 > JavaFX:如何在调整一个/两个多边形的大小(缩放)时保持两个多边形之间的距离不变?

问题描述

我的 GUI 中有一个六边形蜂窝,它们的大小不断变化。我需要找到一种方法来同时缩放这些形状而不会相互重叠。

我发现边缘之间的距离必须保持不变,但仅此而已。我真的需要帮助将其翻译成代码。任何帮助将不胜感激!我目前正在使用场景生成器。我试图将多边形中心之间的距离绑定到其中一个多边形。这是我的代码(不起作用):

public class Controller implements Initializable {
    @FXML
    private AnchorPane root ;
    @FXML
    private Polygon poly1;
    @FXML
    private Polygon poly2;

@Override
public void initialize(URL location, ResourceBundle resources) {

    DoubleProperty distanceProperty = new SimpleDoubleProperty();

    ChangeListener<Number> changeListener = (observable, oldValue, newValue) -> {

        Point2D p1 = new Point2D(poly1.getLayoutX(), poly1.getLayoutY());
        Point2D p2 = new Point2D(poly2.getLayoutX(), poly2.getLayoutY());
        distanceProperty.set(p1.distance(p2));
    };
    poly1.layoutXProperty().addListener(changeListener);
    poly2.layoutXProperty().addListener(changeListener);
    poly1.layoutYProperty().addListener(changeListener);
    poly2.layoutYProperty().addListener(changeListener);

    poly1.layoutYProperty().bind(distanceProperty);
    poly1.layoutXProperty().bind(distanceProperty);

    // changing the size of poly1
    double initialScaleX = poly1.getScaleX();
    double initialScaleY = poly1.getScaleY();
    poly1.setScaleX(initialScaleX*2.0);
    poly1.setScaleY(initialScaleY*2.0);
}
}

标签: javajavafxbindingshapeshexagonal-tiles

解决方案


推荐阅读