Разрешение экрана или как работать с TerminalInfoInteger(TERMINAL_SCREEN_DPI)

 

Мой экран 1920 * 1080 разрешение 

Print("   Rezult   "+TerminalInfoInteger(TERMINAL_SCREEN_DPI)); 

показывает 96   что это такое и от чего оно зависит ?

Пробовал уменьшить разрешение, пробовал увеличить все равно 96.

Знаю что не экранах с большим разрешением обьекты типа кнопки тексты могут отображаться не верно


Как с этим бороться ?

 
Vladimir Pastushak:

Мой экран 1920 * 1080 разрешение 

Print("   Rezult   "+TerminalInfoInteger(TERMINAL_SCREEN_DPI)); 

показывает 96   что это такое и от чего оно зависит ?

Пробовал уменьшить разрешение, пробовал увеличить все равно 96.

Знаю что не экранах с большим разрешением обьекты типа кнопки тексты могут отображаться не верно


Как с этим бороться ?

Бороться? Это же количество точек на дюйм - (Dots Per Inch)

Как ни меняй разрешение экрана - количество пикселей по ширине и высоте, DPI останется тем же

Ну если только монитор себе другой возьмёшь...

 
Vladimir Pastushak:

Мой экран 1920 * 1080 разрешение 

Print("   Rezult   "+TerminalInfoInteger(TERMINAL_SCREEN_DPI)); 

показывает 96   что это такое и от чего оно зависит ?

Пробовал уменьшить разрешение, пробовал увеличить все равно 96.

Знаю что не экранах с большим разрешением обьекты типа кнопки тексты могут отображаться не верно


Как с этим бороться ?

Сам в терминале рисованием не занимаюсь, скажу, что помню, с тех времен, как делал графические редакторы. Иконки (кнопки) рисовали поточечно, два-три типоразмера для разных разрешений. Размеры областей графического вывода подсчитывали, исходя из их процентных размеров относительно всей области (прямоугольника) вывода. При этом подбирался размер шрифта, чтобы опции меню и тексты были видимы и занимали разумную ширину. Много скрупулезной работы. Включая подбор подходящих гарнитур шрифтов, трутайповских и растровых.

Однако все это требовалось, если пользователи программы работали на различных видеорежимах и разрешениях монитора. Прежде всего надо было определиться именно с тем, какие видеорежимы (EGA, VGA, XGA, SVGA...) и диапазоны разрешений будете поддерживать. Как сейчас с этим разнообразием, не знаю. Думаю, должно было стать значительно проще.

Конкретно по приведенному Вами рисунку можно предположить, что размер (кегль) шрифта не меняется с разрешением, хотя должен бы. Попробуйте его поменять в соответствии с вертикальным размером экрана в пикселах. В MQL навскидку получить этот размер я средств не знаю, наверное, необходимо подключать DLL. Однако сами-то Вы его знаете (1080 или другой, который установите). Кроме этого, можно попробовать для текстов способ масштабирования, приведенный в справке https://www.mql5.com/ru/docs/constants/environment_state/terminalstatus для размеров прямоугольных окон, "Пример вычисления коэффициента масштабирования:".

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Идентификаторы для получения информации о клиентском терминале функциями TerminalInfoInteger() и TerminalInfoString(). В качестве параметра эти функции принимают значения из перечислений ENUM_TERMINAL_INFO_INTEGER и ENUM_TERMINAL_INFO_STRING соответственно. Знание этого параметра позволяет задавать размеры графических объектов таким...
 
Artyom Trishkin:

Бороться? Это же количество точек на дюйм - (Dots Per Inch)

Как ни меняй разрешение экрана - количество пикселей по ширине и высоте, DPI останется тем же

Ну если только монитор себе другой возьмёшь...

Есть ли формула по которой можно просчитать размеры изображений в зависимости от разрешения dpi ?
 
Vladimir Pastushak:
Есть ли формула по которой можно просчитать размеры изображений в зависимости от разрешения dpi ?

Как ни странно - пример приведен в справке https://www.mql5.com/ru/docs/constants/environment_state/terminalstatus

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Идентификаторы для получения информации о клиентском терминале функциями TerminalInfoInteger() и TerminalInfoString(). В качестве параметра эти функции принимают значения из перечислений ENUM_TERMINAL_INFO_INTEGER и ENUM_TERMINAL_INFO_STRING соответственно. Знание этого параметра позволяет задавать размеры графических объектов таким...
 
Rashid Umarov:

Как ни странно - пример приведен в справке https://www.mql5.com/ru/docs/constants/environment_state/terminalstatus

А слона то я и не приметил, благодарю....
 
Vladimir Pastushak:

Мой экран 1920 * 1080 разрешение 

Print("   Rezult   "+TerminalInfoInteger(TERMINAL_SCREEN_DPI)); 

показывает 96   что это такое и от чего оно зависит ?

Пробовал уменьшить разрешение, пробовал увеличить все равно 96.

Знаю что не экранах с большим разрешением обьекты типа кнопки тексты могут отображаться не верно


Как с этим бороться ?

А у Вас что, кнопки рисуются из bmp-файлов?

Но если кнопки рисовать через CCanvas, то размер шрифта в зависимости от размера кнопки можно автоматически настраивать с помощью функции TextWidth

 
Nikolai Semko:

А у Вас что, кнопки рисуются из bmp-файлов?

Но если кнопки рисовать через CCanvas, то размер шрифта в зависимости от размера кнопки можно автоматически настраивать с помощью функции TextWidth

Канва не работает в тестере...
 
Приветствую, вот цитата из справки

Знание этого параметра позволяет задавать размеры графических объектов таким образом, чтобы они выглядели одинаково на мониторах с различной разрешающей способностью.

а пример использования есть?

 
Aliaksandr Kryvanos:
Приветствую, вот цитата из справки

а пример использования есть?


я вот тоже только сейчас прочитал о такой функции, в рабочее время попробую это использовать. 

Влияет ли масштаб шрифта в настройках ОС на этот параметр? часто многие пользуются масштабированием шрифта - и панели выглядят коряво 

 
Vladimir Pastushak:
Канва не работает в тестере...

не работает именно класс CCanvas?

все функции рисования работают без проблем

Причина обращения: