← 返回文章列表

控制缩放以及多倍图

一 系统缩放

Javafx针对系统缩放是有优化的,比如在我的小新pro13上默认缩放比例为200%,因此在默认情况下如下的代码:

primaryStage.setWidth(500);
primaryStage.setHeight(500);

展示的宽高是1000x1000,而我们是否可以自己来进行控制呢?也就是很多桌面程序常见的功能:是否禁止屏幕DPI适配

在Javafx中为我们提供了两个虚拟机参数:

#  禁止屏幕缩放
-Dprism.allowhidpi = false
# 默认起始缩放比例
:-Dglass.win.minHiDPI = 1

因此只需要在虚拟机启动的时候加上这个参数即可,而Java为我们提供了两种方式,分别是键值对,以及传入一个Properties对象,因此就可以将参数写入Properties文件中,就可以保存用户的设置。

二 多倍图

多倍图还是对系统缩放的优化,因为如果图片是固定大小的,如果高分屏缩放很可能是150%,200%,那这样图片就会出现模糊的效果,因此Javafx对此进行了优化只要图片名称后加入 @2x或者 @3x,注意只能是整数倍,就可以实现自动切换,比如下面的代码,加载的其实是 java@2x.png这张图片。

primaryStage.getIcons().add(
    new Image(getClass().getResource("/img/java.png").toExternalForm())
);

注意加载图片的方式要使用非流的方式,因为如果是流就固定的使用那张图片了。

三 参考

感谢B站LeeWyatt的讲解,这是视频地址 https://www.bilibili.com/video/BV113411k7Zr