如何在不更改layoutX和layoutY

我正在尝试重新缩放窗格以适合显示器的分辨率。原始窗口用于高清显示。

现在我已经尝试使用

     public void initialize(URL location,ResourceBundle resources) {
        Rectangle2D screenBounds = Screen.getPrimary().getBounds();
        double x = screenBounds.getWidth();
        double y = screenBounds.getHeight();
        double ratioX = x/1366;
        double ratioY = y/768;
        System.out.println(ratioX);
        System.out.println(ratioY);
        ObservableList<Node> l = pane.getchildren();
        for (Node n : l) {
            n.setScaleX(ratioX);
            n.setScaleY(ratioY);
            n.setLayoutX(n.getLayoutX() * ratioX);
            n.setLayoutY(n.getLayoutY() * ratioY);
        }

但是setScaleX和setScaleY扩展Node的方式是,该Node不会源自给定LayoutX的LayoutY。它向左右扩展。

如何以节点的左上角始终位于已定义的layoutX和layoutY的方式缩放节点

yangliuliu2009 回答:如何在不更改layoutX和layoutY

使用scaleXscaleY进行比例转换的节点的枢轴点是节点的中心。如果改用Scale转换,则可以指定枢轴点。正如@James_D在评论中指出的那样,将转换应用于父btw可能会更容易。

Scale scale = new Scale(
                    ratioX,ratioY,0 // pivot coordinates
              );

node.getTransforms().add(scale);

此外,请注意,对于两个尺寸使用不同的比例因子,渲染结果的节点的高宽比将不同。

本文链接:https://www.f2er.com/2631231.html

大家都在问