На экранах с разным разрешением графические объекты отображаются по-разному

 

Добрый вечер, коллеги

Появилась такая проблема, графические объекты индикатора на экране с более высоким разрешением стали отображаться некорректно: размеры объектов сохранились, однако расстояния от угла графика уменьшились из-за чего объекты стали накладываться друг на друга. Можно ли как-то решить эту проблему, может быть указать расстояния в других единицах измерения или есть другие какие-то методы, позволяющие сделать так, чтобы графические объекты на любых экранах отображались одинаково?

 
Dima.i76:

Добрый вечер, коллеги

Появилась такая проблема, графические объекты индикатора на экране с более высоким разрешением стали отображаться некорректно: размеры объектов сохранились, однако расстояния от угла графика уменьшились из-за чего объекты стали накладываться друг на друга. Можно ли как-то решить эту проблему, может быть указать расстояния в других единицах измерения или есть другие какие-то методы, позволяющие сделать так, чтобы графические объекты на любых экранах отображались одинаково?

Пожалуйста, укажите на каком оборудовании такое происходит:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Vladimir Karputov, 2019.07.31 12:12

Укажите такие данные:

скопируйте из вкладки "Журнал" три строчки (выделить три строки -> правый клик мышки -> Копировать)


и вставьте в сообщение. Должно получится вроде этого:

2019.07.31 11:53:10.681 MetaTrader 5 x64 build 2093 started (MetaQuotes Software Corp.)
2019.07.31 11:53:10.685 Windows 10 (build 18362) x64, IE 11, UAC, Intel Core i3-3120M  @ 2.50GHz, Memory: 3188 / 8077 Mb, Disk: 99 / 415 Gb, GMT+2
2019.07.31 11:53:10.685 C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

 
Vladimir Karputov:

Пожалуйста, укажите на каком оборудовании такое происходит:

На этом оборудовании все было нормально:

2019.08.05 23:46:05.928 C:\Users\Алексей\AppData\Roaming\MetaQuotes\Terminal\77F673413FD09896647B2203EF1695F5

2019.08.05 23:46:05.928 Windows 7 Ultimate x86, IE 11, UAC, 4 x AMD Phenom II N970 Quad-Core Processor, Memory: 2291 / 3578 Mb, Disk: 145 / 283 Gb, GMT+5

2019.08.05 23:46:05.927 Forex4you build 1170 started (E-Global Trade and Finance Group, Inc.)

На этом появляются проблемы:

2019.08.05 18:47:20.513 Data Folder: C:\Users\Алексей\AppData\Roaming\MetaQuotes\Terminal\7E781795884A398A87F33ED1B942D689

2019.08.05 18:47:20.513 Windows 10 Home Single Language x64, IE 11, UAC, 8 x Intel Core i5-8250U  @ 1.60GHz, Memory: 4300 / 8078 Mb, Disk: 5 / 118 Gb, GMT+5

2019.08.05 18:47:20.513 Forex4you build 1170 started (E-Global Trade and Finance Group, Inc.)


 
Dima.i76:

Добрый вечер, коллеги

Появилась такая проблема, графические объекты индикатора на экране с более высоким разрешением стали отображаться некорректно: размеры объектов сохранились, однако расстояния от угла графика уменьшились из-за чего объекты стали накладываться друг на друга. Можно ли как-то решить эту проблему, может быть указать расстояния в других единицах измерения или есть другие какие-то методы, позволяющие сделать так, чтобы графические объекты на любых экранах отображались одинаково?

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

Даже пришлось при выводе многострочных комментов вводить двойной перевод строки, так как строки налазили друг на друга по вертикали. Связано это с тем что размеры определяются в пикселях, а количество пикселей в единице длины разное, поэтому и размер получается разный.

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

 
khorosh:

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

Даже пришлось при выводе многострочных комментов вводить двойной перевод строки, так как строки налазили друг на друга по вертикали. Связано это с тем что размеры определяются в пикселях, а количество пикселей в единице длины разное, поэтому и размер получается разный.

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

Я так и предполагал, что дело в плотности пикселей, и вот вопрос, можно ли как-то это дело автоматизировать, может быть можно задать расстояния не в пикселях, а в относительных единицах, или как-то в компиляторе определить эту плотность пикселей на единицу площади?

 
Dima.i76:

или как-то в компиляторе определить эту плотность пикселей на единицу площади?

поэкспериментируйте на своих ПК с таким скриптом:

void OnStart()
  {
   Print("DPI = ",TerminalInfoInteger(TERMINAL_SCREEN_DPI));
  }

https://docs.mql4.com/ru/constants/environment_state/terminalstatus

 
Igor Makanu:

поэкспериментируйте на своих ПК с таким скриптом:

https://docs.mql4.com/ru/constants/environment_state/terminalstatus

Спасибо большое! Все заработало так, как надо

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