Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当用户在Windows设置上更改屏幕分辨率时,如何使用Java获得正确的显示DPI?_Java_Windows_Awt_Screen Resolution_Toolkit - Fatal编程技术网

当用户在Windows设置上更改屏幕分辨率时,如何使用Java获得正确的显示DPI?

当用户在Windows设置上更改屏幕分辨率时,如何使用Java获得正确的显示DPI?,java,windows,awt,screen-resolution,toolkit,Java,Windows,Awt,Screen Resolution,Toolkit,为了获得dpi值,我使用以下方法: float dpi = Toolkit.getDefaultToolkit().getScreenResolution(); 当我应用1366 x 768作为分辨率值时,预先显示设置 dpi值返回96(这是我所期望的) 但是,当我在设置中将800 x 600更改为分辨率值时 dpi值返回96(该值应低于96) 当我在mac计算机中尝试相同的情况时,正确的值出现了 我认为Windows操作系统的分辨率值有问题。我已经测试了Windows 7和Windows 1

为了获得dpi值,我使用以下方法:

float dpi = Toolkit.getDefaultToolkit().getScreenResolution();
当我应用1366 x 768作为分辨率值时,预先显示设置

dpi
值返回
96
(这是我所期望的)

但是,当我在设置中将800 x 600更改为分辨率值时

dpi
值返回
96
(该值应低于
96

当我在mac计算机中尝试相同的情况时,正确的值出现了

我认为Windows操作系统的分辨率值有问题。我已经测试了Windows 7Windows 10

编辑:要了解我为什么需要此值,请检查此问题及其答案

我认为答案在于:

指定在屏幕上显示文本和其他项目的大小。 Windows DPI值是介于96和480之间的整数。支持的值 包括96、120和144。默认情况下,Windows使用自动DPI 配置


这就是为什么它以800 x 600返回
96

您需要分辨率和dpi做什么?我的java应用程序可以根据屏幕的分辨率(DPI)扩展所有内容。这包括图标、边框、插图、自定义图形和字体。而您的图形API无法为您处理这些问题?我已经编辑了我的问题。请参阅