Войти
ПрограммированиеФорумГрафика

DPI и разрешение экрана. Не совсем понимаю.

#0
(Правка: 13:28) 13:27, 19 апр. 2019

Есть такой код.

g_DPIScaleX = GetDeviceCaps(hdc, LOGPIXELSX) / 96.0f;
g_DPIScaleY = GetDeviceCaps(hdc, LOGPIXELSY) / 96.0f;

Что бы не зависить от размера пикселя юзают DPI.

Допустим я рисовал два прямоугольника в разрешении 1680х1050.
1-й в координатах X=1400,Y=1000 и 2-й в координатах X=1500,Y=900


Ну а если разрешение юзера 1024х768 , то DPI как в таком случае ?
Сможет вывести мои два прямоугольника ? Или они будут за экраном разрешением 1024х768 ?


#1
16:50, 19 апр. 2019

Зависит от DPI.

#2
(Правка: 21:48) 21:47, 19 апр. 2019
DPI и разрешение экрана. Не совсем понимаю.

Вопрос так написан, что его тоже не понятно.
Возможно, если его переформулировать, то и ответ сам найдётся...
g_DPIScaleX = GetDeviceCaps(hdc, LOGPIXELSX) / 96.0f;
Этот метод объявлен устаревшим начиная с Windows 8.1.
GetDpiForMonitor() должен использоваться на современных системах (с независимым коэффициентом масштабирования для каждого монитора).
#3
(Правка: 22:06) 22:03, 19 апр. 2019
GetDpiForMonitor()

Msdn пишет: Minimum supported client  Windows 8.1 [desktop apps only]


У меня Win 7.
У других Windows 10.

Зачем Win 8.1 и для неё функция GetDpiForMonitor() ?
Win 8.1 как бы не сильно вызывает интерес сейчас.

#4
22:09, 19 апр. 2019

Ziltop

Зачем Win 8.1 и для неё функция GetDpiForMonitor() ?

Очевидно для корректной поддержки многомониторных конфигураций.
Это одна из причин, почему в Windows 7 невозможно было комфортно пользоваться HiDPI мониторами (и даже WQHD при плохом зрении).
ПрограммированиеФорумГрафика