-
Здравствуйте! Есть в Windows такая вещь, как масштабирование шрифтов и всего остального. Находится в "Резарешение экрана" -> "Сделать текст и другие элементы больше или меньше". По умолчанию установлено в "Мелкий", можно поставить "Средний" и т.д. В Делфи можно узнать значение этого параметра через Screen.PixelsPerInch. При мелком параметре он показывает 96 dpi, при среднем - 120, а дальше вот начинаются чудеса. При крупном масштабе, вместо того, чтобы показать 144, Screen.PixelsPerInch возвращает 96! И соответственно, при еще более крупном масштабе, который должен быть 192, также показывает 96. Вопрос - есть ли какой-то способ узнать dpi, большие 120?
-
узнавать надо не dpi а "логическую" высоту
GetDeviceCaps(DC, LOGPIXELSY);
-
Спасибо, но я забыл написать, что это я тоже пробовал. Ровно тот же результат - 96 и 120 распознает, а дальше возвращает всегда 96
-
не надо этого ничего. чтобы твоя форма при любых настройках пользователя всегда имела такой же вид как у тебя, достаточно знать LOGPIXELSY и отмасштабироваться через Font.Size
-
> достаточно знать LOGPIXELSY
Хорошо. LOGPIXELSY равно 96. Хотя реальный масштаб поставлен "крупный" (150%). И при 200% масштабе LOGPIXELSY все равно равен 96. Как это может помочь?
-
>> В Делфи можно узнать значение этого параметра через Screen.PixelsPerInch.
Нет. GetScaleFactorForMonitor().
-
> icp © (03.08.18 13:03) [3] > чтобы твоя форма при любых настройках пользователя всегда > имела такой же вид как у тебя, достаточно знать LOGPIXELSY > и отмасштабироваться через Font.Size
А можно это поподробнее. Или ссылочку какую где можно про всю эту магию почитать, примерчики там. Абсолютно тёмная для меня тема, которую никак не могу освоить, а очень надо. Спасибо заранее.
-
> KSergey © (30.08.18 08:27) [6] > > > icp © (03.08.18 13:03) [3] > > чтобы твоя форма при любых настройках пользователя всегда > > имела такой же вид как у тебя, достаточно знать LOGPIXELSY > > и отмасштабироваться через Font.Size > > А можно это поподробнее.
Подробнее это весьма масштабный труд. Ибо это в теории всё просто. А на практике сделать форму, которая имеет одинаковый вид при любых пользовательских настройках - это очень сложно. Я бы сказал нереально, но меня могут упрекнуть в недостатке опыта.
-
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
-
Удалено модератором
|