Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Как узнать значение в Делфи значение DPI экрана больше 120?


kostyan29   (03.08.18 10:17

Здравствуйте! Есть в 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]

Удалено модератором


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо