Обсуждение статьи "Визуализируй это! Графическая библиотека в MQL5 как аналог plot из R" - страница 5
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Сейчас артефакты даже с полностью непрозрачными линиями.
Речь шла о попытке нарисовать полностью непрозрачный круг со сглаженными краями (по алгоритму Ву) без потери сглаженности.
Для этого нужны специальные методы заливки со сглаженными краями.
Понимаю, что самостоятельно не сделать?
Понимаю, что самостоятельно не сделать?
Почему нет? Попробуй! )
Можно даже тот случай решить, о котором ты упомянул:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Обсуждение статьи "Визуализируй это! Графическая библиотека в MQL5 как аналог plot из R"
Artyom Trishkin, 2023.07.31 12:39
Все методы сглаживания сильно зависят от непрозрачности линии. При примерно 50% прозрачности уже всё становится не сглаженным и имеет артефакты.
То есть отрисовку на полностью прозрачном холсте (CCanvas) можно сделать с учётом нижнего слоя (график и другие объекты) и это будет без артефактов.
Правда представляется это весьма костыльно и громоздко. Непонятно также пока, насколько это скажется на производительности. Хотелось бы всё же, чтобы этот баг исправили разработчики терминала.
Почему нет? Попробуй! )
Можно даже тот случай решить, о котором ты упомянул:
То есть отрисовку на полностью прозрачном холсте (CCanvas) можно сделать с учётом нижнего слоя (график и другие объекты) и это будет без артефактов.
Правда представляется это весьма костыльно и громоздко. Непонятно также пока, насколько это скажется на производительности. Хотелось бы всё же, чтобы этот баг исправили разработчики терминала.
Я бы такую задачку (если не разработчики, а участники форума) направил для решения Николаю @Nikolai Semko ;)
Я бы такую задачку (если не разработчики, а участники форума) направил для решения Николаю @Nikolai Semko ;)
Он работает только с одним холстом.
А я пока не готов переписывать свою графическую библиотеку, чтобы всё работало на одном холсте.
Хоть это и интересно, но зная, сколько на это может уйти времени не могу в данный момент решиться на такое испытание. Времени сейчас нет так много, как раньше.
Он работает только с одним холстом.
А я пока не готов переписывать свою графическую библиотеку, чтобы всё работало на одном холсте.
Хоть это и интересно, но зная, сколько на это может уйти времени не могу в данный момент решиться на такое испытание. Времени сейчас нет так много, как раньше.
Ну так ведь это же алгоритм. Какая разница - на одном холсте, или нескольких?
Ну так ведь это же алгоритм. Какая разница - на одном холсте, или нескольких?
Мы обсудили две задачи:
1. Если речь о той, о которой я говорил изначально, то тогда для некоторых случаев алгоритмического решения было бы достаточно.
2. Если о той, которую упомянул ты, то тогда здесь парой функций не обойтись. Нужна схема, где в массивах сохраняются все слои. Каждый слой должен отрисовываться с учётом того, что нарисовано на слоях под ним. Кроме этого нужно корректировать все методы в классе CCanvas. Цвет каждого пикселя должен смешиваться с тем, который находится под ним с учётом прозрачности. Тогда не будет артефактов (просветы, рваные края и т.д.). Если всё сделать правильно, то тогда можно реализовать полупрозрачность с размытием. Всё это достаточно просто реализовать на одном холсте. Но когда используется несколько холстов, то это реализовать значительно сложнее.
Он работает только с одним холстом.
А я пока не готов переписывать свою графическую библиотеку, чтобы всё работало на одном холсте.
Хоть это и интересно, но зная, сколько на это может уйти времени не могу в данный момент решиться на такое испытание. Времени сейчас нет так много, как раньше.
Мы обсудили две задачи:
1. Если речь о той, о которой я говорил изначально, то тогда для некоторых случаев алгоритмического решения было бы достаточно.
2. Если о той, которую упомянул ты, то тогда здесь парой функций не обойтись. Нужна схема, где в массивах сохраняются все слои. Каждый слой должен отрисовываться с учётом того, что нарисовано на слоях под ним. Кроме этого нужно корректировать все методы в классе CCanvas. Цвет каждого пикселя должен смешиваться с тем, который находится под ним с учётом прозрачности. Тогда не будет артефактов (просветы, рваные края и т.д.). Если всё сделать правильно, то тогда можно реализовать полупрозрачность с размытием. Всё это достаточно просто реализовать на одном холсте. Но когда используется несколько холстов, то это реализовать значительно сложнее.
Я вроде говорил лишь об алгоритме сглаживания. Безотносительно к наложению прозрачных холстов друг на друга. Хотя... Если наложить, то наверняка всплывут новые задачи. Потому и сослался на Николая - у него вон, видишь, всё нейронными связями давно закреплено, и мозг уже сам наверное мыслит с учётом всех возможных проблем с канвасом )
Я вроде говорил лишь об алгоритме сглаживания. Безотносительно к наложению прозрачных холстов друг на друга. Хотя... Если наложить, то наверняка всплывут новые задачи. Потому и сослался на Николая - у него вон, видишь, всё нейронными связями давно закреплено, и мозг уже сам наверное мыслит с учётом всех возможных проблем с канвасом )
Артем, это реально не тривиальные задачи, которые требуют новых нейронных связей. Например в SVG есть такое понятие как viewBox. Уже кучу видосов посмотрел как он работает, кучу документации прочитал, кучу кода написал, а до сих пор иногда впадаю в ступор. Нужных нейронных связей до сих пор нет, хотя уже несколько раз казалось, что во всем разобрался.
На самом деле я использую несколько холстов ( как правило не больше 4)
Не удалось найти поиском iDot() или 3DStars, чтобы посмотреть код.
Я имел в виду учитывать всё, что находится под холстом, включая и сам график (цвет фона) и цвет его элементов (бары, линии ask/bid и т.д.).
В процессе перемещения этого холста с прозрачным фоном с нарисованными на нём полупрозрачными элементами все пиксели должны отрисовываться корректно.
Сейчас это не так: