Помощь - Поиск - Пользователи - Календарь
Полная версия: Соотношение сторон экрана.
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
TarasBer
Как программе узнать соотношение сторон экрана компьютера, на котором её запустили? 4 к 3 или 16 к 10 или 16 к 9?
volvo
Взять GetSystemMetrics(SM_CXSCREEN) и поделить его на GetSystemMetrics(SM_CYSCREEN). А потом проверить полученное соотношение на равенство 4/3, 16/10 или 16/9
TarasBer
А разве эта функция не в пикселах результат возвращает? Тут пикселы, сами понимаете, не годятся.
volvo
Цитата
Тут пикселы, сами понимаете, не годятся.
То есть, если я скажу, что горизонталь экрана равна 1920 пикселей, а вертикаль - 1080 пикселей, то экран автоматически перестает иметь соотношение 16:9, а если ширина = 160 см, а высота = 90 - то все в порядке?
TarasBer
А, так это говорит про возможности монитора, а не текущее разрешение?
Если текущее разрешение - 800 на 600, но это вовсе не означает, что экран 4:3.
volvo
  ShowMessage(
Format('%dmmX%dmm vs %dX%d',
[GetDeviceCaps(GetDC(0), HORZSIZE), GetDeviceCaps(GetDC(0), VERTSIZE),
GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN)])
);

мне только что выдало 510mmX286mm vs. 1920X1080

Так вот первое соотношение (физические размеры экрана в миллиметрах) - это приблизительно 16:9. Второе - точно 16:9
TarasBer
Ага, GetDeviceCaps. Вот, это оно.


Добавлено через 1 мин.
[offtop]
Цитата
510mmX286mm

Ничего себе у вас мониторчик... Я бы устал глазами туда-сюда бегать по такому.
[/offtop]
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.