Надеюсь ветка не умерла. У меня следующая проблема: монитор 4к, следовательно в Windows у меня шрифт увеличен (размер 200%). Когда делаешь объекты текста для индикаторов, размер текста берется исходя из настроек Windows и тоже масштабируется, в итоге если делать что-то, что нормально выглядит на обычной системе, то на моем компьютере текст залазит друг на друга, а если делать нормально для меня, то на обычных настройках текст слишком мелкий. Я сделала input настройку в индикаторе, чтобы пользователь сам выбирал масштабированный или не масштабированный вариант, но это мне не очень нравится.
Есть ли способ прямо из программы узнать какой шрифт в данный момент в windows (увеличенный или нет) и делать эту поправку в коде, не трогая юзеров? Просто у некоторых бывает монитор 4к с масштабированным текстом и большинство индикаторов (где используется текст) из маркета у них выглядит убого и страшно.
Olga Miakhovich: Надеюсь ветка не умерла. У меня следующая проблема: монитор 4к, следовательно в Windows у меня шрифт увеличен (размер 200%). Когда делаешь объекты текста для индикаторов, размер текста берется исходя из настроек Windows и тоже масштабируется, в итоге если делать что-то, что нормально выглядит на обычной системе, то на моем компьютере текст залазит друг на друга, а если делать нормально для меня, то на обычных настройках текст слишком мелкий. Я сделала input настройку в индикаторе, чтобы пользователь сам выбирал масштабированный или не масштабированный вариант, но это мне не очень нравится.
Есть ли способ прямо из программы узнать какой шрифт в данный момент в windows (увеличенный или нет) и делать эту поправку в коде, не трогая юзеров? Просто у некоторых бывает монитор 4к с масштабированным текстом и большинство индикаторов (где используется текст) из маркета у них выглядит убого и страшно.
Может стоит перейти на работу с ресурсами, или с CCanvas?
Тогда там можно задавать размеры шрифта в соответствии с настройками операционной системы.
Устанавливает шрифт для вывода текста методами рисования и возвращает результат успешности этой операции. По умолчанию используется шрифт Arial и размер -120 (12 pt). [in] Размер шрифта, который может задаваться положительными и отрицательными значениями. При положительных значениях размер выводимого текста не зависит от настроек размеров...
Все, решение найдено. Для тех, кому интересно какое: использовать функцию TerminalInfoInteger(TERMINAL_SCREEN_DPI); При стандартном масштабировании будет 96. Если в 2 раза больше, то и масштабирование в 2 раза соответственно.
Olga Miakhovich: Все, решение найдено. Для тех, кому интересно какое: использовать функцию TerminalInfoInteger(TERMINAL_SCREEN_DPI); При стандартном масштабировании будет 96. Если в 2 раза больше, то и масштабирование в 2 раза соответственно.
Решение есть в справке
Пример вычисления коэффициента масштабирования:
//--- создаём кнопку шириной 1.5 дюйма на экране int screen_dpi = TerminalInfoInteger(TERMINAL_SCREEN_DPI); // получим DPI монитора пользователя int base_width = 144; // базовая ширина в экранных точках для стандартных мониторов c DPI=96 int width = (button_width * screen_dpi) / 96; // вычислим ширину кнопки для монитора пользователя (с учётом его DPI) ... //--- вычисление коэффициента масштабирования в процентах int scale_factor=(TerminalInfoInteger(TERMINAL_SCREEN_DPI) * 100) / 96; //--- использование коэффициента масштабирования width=(base_width * scale_factor) / 100;
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
надеюсь вы друзья)
"Войны Титанов" не будет.
Есть ли способ прямо из программы узнать какой шрифт в данный момент в windows (увеличенный или нет) и делать эту поправку в коде, не трогая юзеров? Просто у некоторых бывает монитор 4к с масштабированным текстом и большинство индикаторов (где используется текст) из маркета у них выглядит убого и страшно.
Надеюсь ветка не умерла. У меня следующая проблема: монитор 4к, следовательно в Windows у меня шрифт увеличен (размер 200%). Когда делаешь объекты текста для индикаторов, размер текста берется исходя из настроек Windows и тоже масштабируется, в итоге если делать что-то, что нормально выглядит на обычной системе, то на моем компьютере текст залазит друг на друга, а если делать нормально для меня, то на обычных настройках текст слишком мелкий. Я сделала input настройку в индикаторе, чтобы пользователь сам выбирал масштабированный или не масштабированный вариант, но это мне не очень нравится.
Есть ли способ прямо из программы узнать какой шрифт в данный момент в windows (увеличенный или нет) и делать эту поправку в коде, не трогая юзеров? Просто у некоторых бывает монитор 4к с масштабированным текстом и большинство индикаторов (где используется текст) из маркета у них выглядит убого и страшно.
Может стоит перейти на работу с ресурсами, или с CCanvas?
Тогда там можно задавать размеры шрифта в соответствии с настройками операционной системы.
Почитайте о TextOut(), TextSetFont()
Все, решение найдено. Для тех, кому интересно какое: использовать функцию TerminalInfoInteger(TERMINAL_SCREEN_DPI); При стандартном масштабировании будет 96. Если в 2 раза больше, то и масштабирование в 2 раза соответственно.
Решение есть в справке
Пример вычисления коэффициента масштабирования:
//--- создаём кнопку шириной 1.5 дюйма на экране
int screen_dpi = TerminalInfoInteger(TERMINAL_SCREEN_DPI); // получим DPI монитора пользователя
int base_width = 144; // базовая ширина в экранных точках для стандартных мониторов c DPI=96
int width = (button_width * screen_dpi) / 96; // вычислим ширину кнопки для монитора пользователя (с учётом его DPI)
...
//--- вычисление коэффициента масштабирования в процентах
int scale_factor=(TerminalInfoInteger(TERMINAL_SCREEN_DPI) * 100) / 96;
//--- использование коэффициента масштабирования
width=(base_width * scale_factor) / 100;
Решение есть в справке
ага, только оно не для шрифтов.
Все, решение найдено.
правда? масштабирование влияет на dpi монитора?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2019.02.19 22:28
Вот видите, что позиция открылась и закрылась по одной и той же цене. Но их цены не равны при сравнении без нормализации!