2016-12-03 2 views
0

У меня есть интересная проблема при попытке получить разрешение (не количество пикселей, а текущее разрешение) пользовательского монитора на устройстве Windows. Screen.getPrimary().getBounds() возвращает правильный результат по ALMOST всем системам. У него проблемы с ноутбуками Win 10. Их разрешение распознается как 1280x768, даже если они 4K и FullHD устройства.JavaFX Screen.getPrimary(). GetBounds() возвращает неправильный размер экрана

Я также попытался следующие подходы:

  • Toolkit.getDefaultToolkit().getScreenSize()
  • Screen.getScreens(), а затем перебрать все экраны (только один найден)
  • GraphicsDevice getDisplayMode().getWidth();
  • GraphicsEnvironment getScreenDevices(), а затем перебрать все экраны (только один найдено)

У меня больше нет идей. Есть ли другой способ, как правильно получить разрешение экрана на всех устройствах Windows?

ответ

1

Я не знаю ваших устройств и Windows 10 в частности, но есть одна вещь, которую вы должны иметь в виду. Указанный размер не является физическим размером пикселя устройства. Вместо этого сообщается о масштабированном размере. В Windows это зависит от настроек дисплея вашего устройства. Например, у моего Mac размер физического пикселя 2880x1800, но размер отчета составляет 1440x900. В зависимости от ваших настроек это не всегда является фактором ровно 2.

+0

Да, вы правы. Я забыл упомянуть, что FullHD-ноутбук сообщает правильное разрешение, когда мы устанавливаем его на меньшее значение (например, 1600x900). Он «лежит» только на определенных разрешениях! И да, я был бы в порядке, если бы он сообщал о масштабированном разрешении правильно, но даже эти значения не являются правильными каждый раз ... – shaiko

+0

Нет, я не говорю об изменении разрешения. Я говорю о настройках размера текста по умолчанию. Я не знаю, как это называется в Windows. – mipa

+0

А, я тебя не понимаю. Ты прав! Это может быть проблемой. Я проверю его прямо сейчас! – shaiko

Смежные вопросы