簡體   English   中英

如何在不更改 layoutX 和 layoutY 的情況下縮放 jfxml 中的節點

[英]How to scale Nodes in jfxml without changing layoutX and 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 以節點不源自給定 LayoutX 和 LayoutY 的方式擴展節點。 它向左和向右擴展。

如何以節點的左上角始終位於定義的 layoutX 和 layoutY 的方式縮放節點

使用scaleXscaleY應用的比例變換的節點的軸心點是節點的中心。 如果您改用Scale變換,則可以指定軸心點。 正如@James_D 在評論中指出的那樣,順便說一下,將轉換應用到父級可能會更容易。

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

node.getTransforms().add(scale);

此外請注意,對兩個維度使用不同的比例因子,渲染結果將不會具有相同的節點高寬比。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM