如何在 JavaFX 中获取系统 DPI?
Posted
技术标签:
【中文标题】如何在 JavaFX 中获取系统 DPI?【英文标题】:How to get system DPI in JavaFX? 【发布时间】:2016-04-28 07:08:57 【问题描述】:从 Java 8u60 开始,JavaFX 似乎会根据当前系统 DPI 隐式缩放所有坐标。
例如,如果 Windows DPI 设置从 100% (96 DPI) 更改为 200% (192 DPI),JavaFX 使所有组件的大小达到预期的两倍。无论坐标是以 em 单位还是以像素为单位给出,都是如此。
但是,Screen.getPrimary().getDpi()
仍然返回 96,可能是因为屏幕的 DPI 实际上并没有改变,只有系统 DPI 设置。
如何获取 JavaFX 用来缩放组件的系统 DPI 值?
【问题讨论】:
【参考方案1】:缩放是单独管理的,例如在 Windows 上为 125%:
Screen screen = Screen.getPrimary();
double dpi = screen.getDpi();
double scaleX = screen.getOutputScaleX();
double scaleY = screen.getOutputScaleY();
System.out.println("DPI: " + dpi + " - scaleX: " + scaleX + " - scaleY: " + scaleY);
输出:
DPI: 96.0 - scaleX: 1.25 - scaleY: 1.25
编辑 从 Java 9 开始!
【讨论】:
以上是关于如何在 JavaFX 中获取系统 DPI?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JavaFX 中获取 Stage 的窗口句柄 (hWnd)?