Обсуждение статьи "Рисование стрелочных индикаторов с использованием класса CCanvas"

 

Опубликована статья Рисование стрелочных индикаторов с использованием класса CCanvas:

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

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

1. Координаты и привязка

Существует два типа расположения прибора на графике — абсолютное и относительное.

При абсолютном расположении координаты представляют собой дистанции в пикселях по осям X и Y от угла привязки.

При относительном расположении создается локальное начало координат, согласно указанному типу относительного расположения. При вертикальном оно будет расположено под или над опорным объектом (если выбран верхний или нижний угол привязки соответственно). При горизонтальном — слева или справа, по аналогии, в сторону удаления от угла привязки. Заданные координаты в данном случае будут смещением от локального начала координат. При положительных смещениях объект будет отдаляться от опорного, при отрицательных — наползать на него.

Опорным объектом может выступать только объект другого стрелочного прибора. Важно, чтобы оба объекта имели одинаковый угол привязки.

На рисунке 2 приведен пример относительного расположения.

Относительное расположение

Рис.2. Относительное расположение стрелочных приборов

Автор: Serhii Shevchuk

 
Красота!))
 
Вот это круть! Респект и уважуха за проделанную работу!
 
Великолепная статья. Оформление статьи, документация и исходные коды на новом уровне профессионализма. Это именно тот уровень, к которому стремишься сам и хочешь видеть в работах других авторов. Спасибо!
 
Полностью согласен с предыдущим комментарием. Спасибо за работу! Хоть, пока, и не представляю, куда можно такое впихнуть, но сразу захотелось это использовать :), добавлю в закладки.
 

Побольше бы таких статей. Спасибо за интересный и качественный материал!

 

Не могу понять что делаю не так но у меня ни один из предоставленных кодов не работает ...

Обьекты создаются где то за пределами но самих приборов нет ...

 
Может ли автор детально проконсультировать по своему труду ?
 
Vladimir Pastushak:
Может ли автор детально проконсультировать по своему труду ?
Могу. Напишите максимально подробно, что именно не получается?
 

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

GaugeSetLegendParameters(gauge, LEGEND_VALUE, true, "1", value_radius, value_angle, 10, "Arial", false, false);

"1" - это и есть количество знаков после запятой.

А само значение указывается через функцию:

GaugeNewValue(gauge, profit);