|
масштаб экрана Win 10
|
|||
---|---|---|---|
#18+
Добрый день. Пытаюсь в Delphi XE7 получить настоящий масштаб экрана. Пробовал через Screen.PixelsPerInch, но оно всегда одинаковое возвращается. Речь НЕ про разрешение, а именно масштаб. Который задается в процентах, отдельно от разрешения. Особенно часто на ноутбуках может отличаться от 100%. Например разрешение 1600 на 900 и масштаб 150%. При этом на одном из ноутов получаю такую картину: для масштаба 125%: что Screen.Width, что GetDeviceCaps(GetDC(0),HORZRES = 1093. что Screen.Height, что GetDeviceCaps(GetDC(0),VERTRES = 614. PixelsPerInch = 96 и GetDeviceCaps(GetDC(0),LOGPIXELSX) = 96. Для масштаба 100%: что Screen.Width, что GetDeviceCaps(GetDC(0),HORZRES = 1366. что Screen.Height, что GetDeviceCaps(GetDC(0),VERTRES = 768. PixelsPerInch = 96 и GetDeviceCaps(GetDC(0),LOGPIXELSX) = 96. Т.е. с увеличением масштаба размеры экрана уменьшаются. Количество пикселей при этом всегда 96 возвращается... Как определить настоящий масштаб? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 18:35 |
|
масштаб экрана Win 10
|
|||
---|---|---|---|
#18+
SilverShieldКак определить настоящий масштаб? Попробуй выставить "high dpi aware" в свойствах приложения. Или в системе отключить "помощь приложениям с масштабированием" в продвинутых настройках. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 19:11 |
|
масштаб экрана Win 10
|
|||
---|---|---|---|
#18+
SilverShield, В XE7 насколько помню не было поддержки hiDPI. Без включенного dpiaware манифеста, приложение запускается в режиме виртуализации и часть функций всегда будет возвращать dpi = 96. Можно взять реальное разрешение, к примеру через EnumDisplaySettings и виртуальное через GetDeviceCaps/GetSystemMetrics. Разделив реальное на виртуальное, можно получить фактор соотношения, который можно умножить на 96. На MS есть немного инфы, но смотрю, часть про виртуализацию уже почему-то зарубили. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 19:30 |
|
масштаб экрана Win 10
|
|||
---|---|---|---|
#18+
_Den_Z_В XE7 насколько помню не было поддержки hiDPI. Без включенного dpiaware манифеста А это не одно и то же?.. VCL как бы изначально DPI-aware, осталось только это сообщить винде. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 19:36 |
|
масштаб экрана Win 10
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Не совсем. D7 тоже умеет скалить контролы, но даже с манифестом она нормально не заработает без напильника. Тот же WM_DPICHANGED XE7 не обрабатывает, который будет приходить с Per-Monitorv2 режимом. Полная обработка всех режимов появилась с 10-й версии(и то не все работало). Проще говоря если не готов отлавливать кастомные отрисвки, которые скорее всего поплывут в dpiaware режиме. Лучше оставить виртуализацию с скалингом. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 19:46 |
|
масштаб экрана Win 10
|
|||
---|---|---|---|
#18+
Вспомнил где был пример функции, правда, оно возвращает фактор для обратного скалирования. Можно посмотреть тут функция GetDisplayScale. Под нужды dpi ее просто переделать. Что-то вроде : Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Независимо от манифеста должно возвращать реальный dpi. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 21:58 |
|
масштаб экрана Win 10
|
|||
---|---|---|---|
#18+
Можно и без подключения манифеста: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2021, 08:56 |
|
масштаб экрана Win 10
|
|||
---|---|---|---|
#18+
_Den_Z_, благодарю! Решение подошло! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2021, 20:08 |
|
масштаб экрана Win 10
|
|||
---|---|---|---|
#18+
Существует ли программная возможность запускать приложение с масштабом 100% не зависимо от установленного в Windows? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2022, 13:21 |
|
масштаб экрана Win 10
|
|||
---|---|---|---|
#18+
kaktus1983 Существует ли программная возможность запускать приложение с масштабом 100% не зависимо от установленного в Windows? https://docs.microsoft.com/en-us/windows/win32/hidpi/setting-the-default-dpi-awareness-for-a-process ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2022, 13:27 |
|
|
start [/forum/topic.php?fid=58&fpage=2&tid=2036650]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
27ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 263ms |
total: | 383ms |
0 / 0 |