Конференция "Основная" » Как узнать значение в Делфи значение DPI экрана больше 120?
 
  • kostyan29 (03.08.18 10:17) [0]
    Здравствуйте! Есть в Windows такая вещь, как масштабирование шрифтов и всего остального. Находится в "Резарешение экрана" -> "Сделать текст и другие элементы больше или меньше". По умолчанию установлено в "Мелкий", можно поставить "Средний" и т.д.
    В Делфи можно узнать значение этого параметра через Screen.PixelsPerInch. При мелком параметре он показывает 96 dpi, при среднем - 120, а дальше вот начинаются чудеса. При крупном масштабе, вместо того, чтобы показать 144, Screen.PixelsPerInch возвращает 96! И соответственно, при еще более крупном масштабе, который должен быть 192, также показывает 96.
    Вопрос - есть ли какой-то способ узнать dpi, большие 120?
  • icp © (03.08.18 11:06) [1]
    узнавать надо не dpi а "логическую" высоту

    GetDeviceCaps(DC, LOGPIXELSY);
  • kostyan29 (03.08.18 12:34) [2]
    Спасибо, но я забыл написать, что это я тоже пробовал.
    Ровно тот же результат - 96 и 120 распознает, а дальше возвращает всегда 96
  • icp © (03.08.18 13:03) [3]
    не надо этого ничего.
    чтобы твоя форма при любых настройках пользователя всегда имела такой же вид как у тебя, достаточно знать LOGPIXELSY и отмасштабироваться через Font.Size
  • kostyan29 (03.08.18 13:32) [4]
    > достаточно знать LOGPIXELSY

    Хорошо. LOGPIXELSY   равно 96. Хотя реальный масштаб поставлен "крупный" (150%). И при 200% масштабе LOGPIXELSY  все равно равен 96. Как это может помочь?
  • Прохосый (28.08.18 21:43) [5]
    >> В Делфи можно узнать значение этого параметра через Screen.PixelsPerInch.

    Нет. GetScaleFactorForMonitor().
  • KSergey © (30.08.18 08:27) [6]
    > icp ©   (03.08.18 13:03) [3]
    > чтобы твоя форма при любых настройках пользователя всегда
    > имела такой же вид как у тебя, достаточно знать LOGPIXELSY
    > и отмасштабироваться через Font.Size

    А можно это поподробнее. Или ссылочку какую где можно про всю эту магию почитать, примерчики там. Абсолютно тёмная для меня тема, которую никак не могу освоить, а очень надо.
    Спасибо заранее.
  • Германн © (31.08.18 01:57) [7]

    > KSergey ©   (30.08.18 08:27) [6]
    >
    > > icp ©   (03.08.18 13:03) [3]
    > > чтобы твоя форма при любых настройках пользователя всегда
    > > имела такой же вид как у тебя, достаточно знать LOGPIXELSY
    > > и отмасштабироваться через Font.Size
    >
    > А можно это поподробнее.

    Подробнее это весьма масштабный труд. Ибо это в теории всё просто. А на практике сделать форму, которая имеет одинаковый вид при любых пользовательских настройках - это очень сложно. Я бы сказал нереально, но меня могут упрекнуть в недостатке опыта.
  • han_malign © (31.08.18 14:07) [8]

    > это весьма масштабный труд

    https://habr.com/post/248135/
  • имя (04.09.18 13:14) [9]
    Удалено модератором
  • login(mobile) (17.09.18 06:06) [10]
    Удалено модератором
  • login(mobile) (17.09.18 06:06) [11]
    Удалено модератором
  • text (17.09.18 09:46) [12]
    Удалено модератором
  • text (17.09.18 09:47) [13]
    Удалено модератором
  • text (17.09.18 09:47) [14]
    Удалено модератором
  • text (17.09.18 09:47) [15]
    Удалено модератором
 
Конференция "Основная" » Как узнать значение в Делфи значение DPI экрана больше 120?
Есть новые Нет новых   [134479   +8][b:0.047][p:0.001]