java - JavaFX:与窗口大小相关的性能
问题描述
当舞台的大小增加时,即使只有一小部分区域发生变化,我也会遇到 JavaFX 的性能不佳。
下面的例子只更新了一个 25x25 的小方块,改变了它的背景。
public class WindowSizeTest extends Application {
private int speed = 1500000000;
@Override
public void start(Stage primaryStage) {
StackPane content = new StackPane();
content.setPrefSize(25, 25);
content.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE);
new AnimationTimer() {
@Override
public void handle(long now) {
double val = ((double) now % speed) / speed;
BackgroundFill backgroundFill = new BackgroundFill(Color.color(val, val, val), CornerRadii.EMPTY, Insets.EMPTY);
Background background = new Background(backgroundFill);
content.setBackground(background);
}
}.start();
StackPane root = new StackPane(content);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
当窗口很小时,一切都很顺利:
..但..
如果在我的 4k 外接显示器上最大化,它会大量使用我的 GPU,并且整个系统的性能会下降:
似乎 JavaFX 重绘了整个窗口内容,而不仅仅是修改的部分(在 Windows 上的行为相同)。
这是预期的行为吗?有人能告诉我为什么会这样吗?
解决方案
推荐阅读
- java - 如何创建一个带有元组值的集合,它将读取元组中的点
- typescript - 重写打字稿中的私有方法
- flutter - 如何在formdata颤动中发送对象
- swiftui - 使用 repeatForever() 反转动画
- rust - 我怎样才能在这里返回 &str?
- aws-codebuild - 如何复制多行代码构建日志?
- c# - 如何使用 Enumerable.Empty
().AsQueryable() - mysql - 使用图数据库查找图上两个节点之间的所有可能路径
- ios - Swift 检索用户表自定义列
- git - 为什么从特定的 GitHub 存储库合并到本地 Git 存储库会导致本地存储库中未提交的更改?