Такая ситуация возникает, если в системе стоит отличное от стандартной величины количество точек на дюйм. Обычно 96 точек или 100%.
Чтобы узнать в индикаторе это значение используйте следующую функцию:
TerminalInfoInteger(TERMINAL_SCREEN_DPI)
Добрый день.
Такая ситуация возникает, если в системе стоит отличное от стандартной величины количество точек на дюйм. Обычно 96 точек или 100%.
Чтобы узнать в индикаторе это значение используйте следующую функцию:
Спасибо, нашёл подобную тему при этом https://www.mql5.com/ru/forum/226636 прикол в том, что я там задавал тот же вопрос :) Просто там есть пример в справке
Пример вычисления коэффициента масштабирования:
//--- создаём кнопку шириной 1.5 дюйма на экране |
При таком использовании графический ресурс будет иметь одинаковый на глаз размер на мониторах с различной разрешающей способностью. При этом размеры управляющих элементов (кнопки, окна диалогов и т.д.) будут соответствовать настройкам персонализации.
куда этот коэффициент масштабирования применить не могу понять?
- 2018.02.03
- www.mql5.com
куда этот коэффициент масштабирования применить не могу понять?
Очевидно, что применять к размеру кнопок - умножать на этот коэффициент.
Было бы проще если бы у меня было 2 монитора и я бы сам видел, что делаю, а так обновлять продукт, просить покупателей проверять и снова по кругу... Я создаю кнопку, например
void Create_Button(string but_name, string label, int xsize, int ysize, int xdist, int ydist, int bcolor, int fcolor) { if (ObjectFind(0, but_name) < 0) { if (!ObjectCreate(0, but_name, OBJ_BUTTON, 0, 0, 0)) { Print(__FUNCTION__, ": failed to create the button! Error code = ", GetLastError()); return; } } ObjectSetString(0, but_name, OBJPROP_TEXT, label); ObjectSetInteger(0, but_name, OBJPROP_XSIZE, xsize); ObjectSetInteger(0, but_name, OBJPROP_YSIZE, ysize); ObjectSetInteger(0, but_name, OBJPROP_CORNER, CORNER_LEFT_UPPER); ObjectSetInteger(0, but_name, OBJPROP_XDISTANCE, xdist); ObjectSetInteger(0, but_name, OBJPROP_YDISTANCE, ydist); ObjectSetInteger(0, but_name, OBJPROP_BGCOLOR, bcolor); ObjectSetInteger(0, but_name, OBJPROP_COLOR, fcolor); ObjectSetInteger(0, but_name, OBJPROP_FONTSIZE, ButtonFontSize); ObjectSetInteger(0, but_name, OBJPROP_HIDDEN, true); ObjectSetInteger(0, but_name, OBJPROP_BORDER_TYPE, BORDER_RAISED); }
вызываю
Create_Button("_alert_switcher", "EURUSD", 80, 15, x_axis, y_axis, clrGray, clrWhite);
Куда применить коэффициент?
Куда применить коэффициент?
Видимо нужно рассчитывать координаты и размер каждой кнопки с учётом коэффициента.
Другой вариант - оставить размеры кнопок
прежними и подбирать коэффициент для шрифта.
double scale=1-0.7*(TerminalInfoInteger(TERMINAL_SCREEN_DPI)-96)/96.0; scale=(scale<0.5)?0.5:NormalizeDouble(scale,2); uchar fontsize=uchar(MathCeil(12*scale));
Вы можете сами задать величину DPI в системе и посмотреть, что получится.
Спасибо, нашёл подобную тему при этом https://www.mql5.com/ru/forum/226636 прикол в том, что я там задавал тот же вопрос :) Просто там есть пример в справке
Пример вычисления коэффициента масштабирования:
//--- создаём кнопку шириной 1.5 дюйма на экране |
При таком использовании графический ресурс будет иметь одинаковый на глаз размер на мониторах с различной разрешающей способностью. При этом размеры управляющих элементов (кнопки, окна диалогов и т.д.) будут соответствовать настройкам персонализации.
куда этот коэффициент масштабирования применить не могу понять?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
День добрый! Мне нужен пример реализации в коде для устранения такой вот ситуации:
У меня нормально -
у другого нет -
текст везде растянутый, изменение размера шрифта стандартно
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,8);
не работает