【问题标题】:How to get system DPI in JavaFX?如何在 JavaFX 中获取系统 DPI?
【发布时间】: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 值?

【问题讨论】:

    标签: 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 开始!

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-12
      相关资源
      最近更新 更多