Физический размер экрана

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

Если проблема именно под Linux, то может воспользоваться системными средствами? xdpyinfo

Да уже и с этой стороны заходил, эта команда возвращает неверное значение.
http://linuxforum.ru/viewtopic.php?id=34999
Devel0
новенький
Сообщения: 66
Зарегистрирован: 24.07.2011 10:43:13

Сообщение Devel0 »

Ясно. В таком случае стоит проверить, что говорит EDID. Если там корректная информация, то возможно, что в X-сервере есть баг с определением DPI / размеров экрана. Можно ещё попробовать явно задать DPI и размеры через xorg.conf и посмотреть что получится.
kazalex
постоялец
Сообщения: 296
Зарегистрирован: 01.06.2012 14:54:10

Сообщение kazalex »

Похоже, тебе нужна функция gdk_get_screen_resolution.

В виджетсете Gtk2, для получения значений PixelsPerInch используется вызов функции GetDeviceCaps из модуля LCLIntf. Код отвечающий за расчет:

Код: Выделить всё

  LOGPIXELSX : { Logical pixels per inch in X }
    Result := RoundToInt(gdk_screen_width / (GetScreenWidthMM / 25.4));

  LOGPIXELSY : { Logical pixels per inch in Y }
    Result := RoundToInt(gdk_screen_height / (GetScreenHeightMM / 25.4));

Как видно тут scale factor не учитывается.
Alex2013
долгожитель
Сообщения: 3237
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Определение модели монитора вообще-то возможно даже при подключении к VGA порту кроме того в большинстве систем есть ручной выбор модели и многие пользователи устанавливают нужную самостоятельно ...
К некоторым мониторам идут драйвера которые тоже устанавливают в метрики винды то что нужно В общем предлагаю копать метрики ОСи составлять свою базу наиболее распространенных моделей ...
В крайнем случае можно попросить юзера линейкой измерить тестовые отрезки или наоборот потребовать нарисовать на экране отрезок длинной например десять см .. (Мышкой разумеется :wink: ) .
Ответить