2017-02-01 14 views
2

, чтобы иметь значение ПОЛУЧИТЬ точки на дюйм, я использую это:Как получить правильный DPI дисплея с Java, когда пользователь меняет разрешение экрана в настройках Windows?

float dpi = Toolkit.getDefaultToolkit().getScreenResolution(); 

В настройках дисплея заранее, когда я применил 1366 х 768 в качестве значения разрешения; Значение

dpi возвращает 96 (то есть то, что я ожидал)

Однако, когда я изменил 800 х 600 в качестве значения разрешения в настройках;

dpi значение возвращает 96 (Это должно быть более низкое значение, чем 96)

При попытке же случай в макинтош компьютер, правильные значения приходят.

Я думаю, что что-то не так в значении разрешения, которое исходит от ОС Windows. Я тестировал на Windows 7 и Windows 10.

Редактировать: Чтобы понять, зачем мне это значение, задайте этот вопрос и его вопрос answer.

+0

Что вам нужно разрешение и точек на дюйм для? Это очень похоже на проблему [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). –

+0

Приложение java масштабирует все до разрешения (DPI) экрана. Сюда входят значки, границы, вставки, пользовательская графика и шрифт. – ziLk

+0

И ваш графический API не справляется с этим для вас? –

ответ

0

Я думаю, что ответ в official documentation:

Указывает, какой размер, чтобы показать текст и другие элементы на экране. Значение DPI для Windows - это целое число от 96 до 480. Поддерживаемые значения включают 96, 120 и 144. По умолчанию Windows использует автоматическую настройку DPI .

Вот почему он возвращает 96 для 800 х 600.