控制缩放以及多倍图

chalmery Lv2

一 系统缩放

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

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

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

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

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

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

二 多倍图

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

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

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

三 参考

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

  • 标题: 控制缩放以及多倍图
  • 作者: chalmery
  • 创建于 : 2022-02-08 00:00:00
  • 更新于 : 2022-02-08 00:00:00
  • 链接: https://github.com/chalmery/1839521991/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
此页目录
控制缩放以及多倍图