
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В классе CGraphic заменил во всех местах тип color на uint, как вы и просили.
Так же добавил новые методы в класс CCanvas, которые позволяют рисовать примитивы с заданной толщиной:
В соответствия с нововведение CCanvas расширил свойства CCurve:
Теперь при отрисовки кривой линиями можно задавать толщину линий и стиль её концов.
Да это же просто офигительно.
Была пересмотрена работа со сплайнами (интерполяция кривыми Безье). Её реализация была перенесена из класса CGraphics непосредственно в CCanvas, что позволяет строить сплайны вне библиотеки Graphics.
Кроме того был добавлен алгоритм отрисовки замкнутого сплайна.
В итоге в классе CCanvas появилось два новый открытых метода:
Данные методы позволяет рисовать сплайны в заданном стиле и с заданной толщиной.
В следствие того, что кривые Безье довольно точно описываю круг и эллипс, нет явной необходимости дополнять класс CCanvas новыми методами для отрисовки этих примитивов с заданной толщиной.
Пример аппроксимации эллипса кривыми Безье на основе метода PolygoneSmooth:
Результат:

Еще один возможный шаг в сторону универсальности библиотеки Graphics: пользовательский режим отрисовки кривых CURVE_CUSTOM.
Данный режим избавит от необходимости делать наследников класса CGraphic и перегружать методы ...Plot, что бы нарисовать кривую иначе, чем позволяют стандартные средства библиотеки.
Для реализации данного режима CURVE_CUSTOM в класс CCurve будут добавлены новые свойства:
Основывается он на новом указателе на функцию PlotFucntion:
Данный подход открывает новые возможности для отрисовки графиков.
Для примера реализуем построение свечей в библиотеки CGraphics:
1. Создадим класс-контейнер в котором будут храниться все данные об одной свече:
2. Так как класс CCandle является наследником от CObject, то все свечи которые мы хотим нарисовать мы можем последовательно записать в объект класса CArrayObj. Этот массив будет попадать в наш пользовательский метод отрисовки как параметр cbdata. В итоге метод по отрисовки свечей будет выглядеть следующим образом:
3. Для простоты, все свечи будем генерироваться случайным образом. И так мы последовательно генерируем 10 свечей и наполняем им объект класса CArrayObj. После создаём объект CGraphics и добавляем в него одну кривую при этом указывая, что её отрисовка будет происходить на основе наше функции PlotCandles. Так же необходимо изменить максимальное и минимальное значение по оси y, так что бы наши свечи были полностью видны.
В результате мы получаем следующий график:
@Roman Konopelko
есть небольшая ошибка в функции CGraphic::SetDefaultParameters
Должны быть инициализированы цвета с учетом непрозрачности.
@Roman Konopelko
есть небольшая ошибка в функции CGraphic::SetDefaultParameters
Должны быть инициализированы цвета с учетом непрозрачности.
Вот такой пример привёл к зависанию компьютера. Что делал: после навешивания индикатора на график в редакторе игрался различными комбинациями закомментировать/раскомментировать строки 87 и 88 (когда по одной, когда вместе)
Повторил достижение два раза. Жаль не записывал последовательность действий. Третий раз банально боюсь проверять.
Добавлено: билд 1607 х64
Вот такой пример привёл к зависанию компьютера. Что делал: после навешивания индикатора на график в редакторе игрался различными комбинациями закомментировать/раскомментировать строки 87 и 88 (когда по одной, когда вместе)
Повторил достижение два раза. Жаль не записывал последовательность действий. Третий раз банально боюсь проверять.
Добавлено: билд 1607 х64
Сегодня повторил рекорд - мертвое зависание компьютера, успел увидеть рост потребления ОЗУ с 2 Гб до 5.5 Гб. Вроде успел закрыть график, но компьютер висит уже пять минут.
В этот раз ввел ограничение на размер массива - не более 300 элементов. Как видно не помогло 🤔
что дебаг говорит?
что дебаг говорит?
Ж жебага не дошло, я делал так: навесил индикатор и раскоментировал/закоментировал одну или две строки и компилировал. В итоге пишу с планшета, ноут ушёл в аут..
Ж жебага не дошло, я делал так: навесил индикатор и раскоментировал/закоментировал одну или две строки и компилировал. В итоге пишу с планшета, ноут ушёл в аут..
Так, ноут после жёсткой перезагрузки ожил, но желание дальше проводить губительный эксперимент пропало - на ноуте крутятся несколько советников, поэтому нет желания ловить зависон на целый час.