Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Соотношение сторон экрана.

Автор: TarasBer 14.03.2010 2:53

Как программе узнать соотношение сторон экрана компьютера, на котором её запустили? 4 к 3 или 16 к 10 или 16 к 9?

Автор: volvo 14.03.2010 6:17

Взять GetSystemMetrics(SM_CXSCREEN) и поделить его на GetSystemMetrics(SM_CYSCREEN). А потом проверить полученное соотношение на равенство 4/3, 16/10 или 16/9

Автор: TarasBer 14.03.2010 17:55

А разве эта функция не в пикселах результат возвращает? Тут пикселы, сами понимаете, не годятся.

Автор: volvo 14.03.2010 18:11

Цитата
Тут пикселы, сами понимаете, не годятся.
То есть, если я скажу, что горизонталь экрана равна 1920 пикселей, а вертикаль - 1080 пикселей, то экран автоматически перестает иметь соотношение 16:9, а если ширина = 160 см, а высота = 90 - то все в порядке?

Автор: TarasBer 14.03.2010 18:58

А, так это говорит про возможности монитора, а не текущее разрешение?
Если текущее разрешение - 800 на 600, но это вовсе не означает, что экран 4:3.

Автор: volvo 14.03.2010 19:07

  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 14.03.2010 19:22

Ага, GetDeviceCaps. Вот, это оно.


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

Цитата
510mmX286mm

Ничего себе у вас мониторчик... Я бы устал глазами туда-сюда бегать по такому.
[/offtop]