【问题标题】:Scaling down the height of a rectangle to fit in a window in javafx缩小矩形的高度以适合 javafx 中的窗口
【发布时间】:2015-05-25 03:23:33
【问题描述】:

我目前正在开展一个项目,该项目依赖于通过矩形表示文件大小。然而,我已经坚持了很长一段时间,是将高度缩放到可以容纳在我的舞台内的大小。这是该项目的关键部分,因为它允许用户直观地比较他们从机器上的任何目录查看的文件的大小。 编辑:我尝试添加图像,但我还没有足够的声誉:(。 http://tinypic.com/r/2e56pol/8

【问题讨论】:

  • 您可以通过知道矩形的最大高度和窗口的高度 (maxHeight/viewHeight) 来定义缩放因子,然后您可以将矩形的当前高度乘以该因子以获得统一缩放。您还可以将矩形渲染为图像,然后将 Mage 作为一个整体进行缩放。但是想法还是一样的……
  • 所以我必须找到所有矩形的最大高度?
  • 另一个想法是对高度进行归一化,以便高度矩形成为 1 的因子和最小的 0。这将允许您渲染矩形而不必总是计算缩放(因为标准化值已经缩放)
  • 如何计算?
  • 您可以使用文件大小。但无论哪种方式,您只需遍历值列表并使用 Math.max 确定哪个是最大的,然后重新遍历列表并计算比例/归一化值...

标签: java javafx height rectangles


【解决方案1】:

为什么不直接将矩形的高度绑定到场景的 using:

rectangle.heightProperty().bind(scene.heightProperty());

一个完整的例子:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class DemoTabPane extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception {
        Rectangle rectangle = new Rectangle(20,20,200,200);
        rectangle.setStroke(Color.BLACK);
        Scene scene = new Scene(new HBox(rectangle), 100, 100);
        rectangle.heightProperty().bind(scene.heightProperty());
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

【讨论】:

  • 我不太明白代码。你能解释一下吗?我的意思是特别是宽度绑定。
  • 绑定可帮助您将矩形的高度与场景/舞台的高度相关联。在我的示例中,系数为 100%,即无论您的舞台大小,矩形将完全填充高度。
  • 我是在对填充、旋转角度等进行更改之前还是之后绑定它?
  • 我已经添加了你的代码,但它似乎隐藏了所有的矩形。另外,我希望每个矩形之间的高度都不同,以便用户可以比较它,就像我上面解释的那样。
  • 我使用 MadProgrammer 的第一个建议或多或少地更改了我的代码。谢谢你疯了。
猜你喜欢
  • 2016-05-20
  • 2021-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多