Обсуждение статьи "Визуализируй это! Графическая библиотека в MQL5 как аналог plot из R" - страница 6

 
Nikolai Semko #:
На самом деле я использую несколько холстов ( как правило не больше 4) 
Всегда существует золотая середина. Одна крайность - всю статику и всю динамику рисовать на одном холсте, другая крайность - все объекты рисовать, как отдельные холсты.
Важно не забывать, что если у вас есть два холста с прозрачностью, перекрывающие друг друга, то все равно процессор, ( может быть в Win10-11  GPU,,но думаю все же CPU), будут смешивать каждый пиксель даже однородного (ненулевой прозрачности) фона.
Здесь можно позаимствовать у JS практику кэширования канваса или его части для повышения производительности.
Что касается сглаженных кругов, то я уже публиковал вариант такого круга, которая идеальна (по производительности) для кругов радиусом меньше ~5 пикселей. Функция вроде называлась iDot(),  и была в коде 3DStars. Она очень примитивная и короткая (примерно 10 строк кода). Для кругов большего радиуса она далеко не оптимальна в плане производительности. Для больших радиусов высокопроизводительная функция уже больше 100 строк кода. 
Да, после многих лет установления новых нейронных связей в мозгу по холсту, я сейчас могу сделать библиотеку по холсту любого уровня. Было бы время и мотивация. 
Алгоритм Wu считаю устаревшим.

Не удалось найти поиском iDot() или 3DStars, чтобы посмотреть код.

Я имел в виду учитывать всё, что находится под холстом, включая и сам график (цвет фона) и цвет его элементов (бары, линии ask/bid и т.д.).

В процессе перемещения этого холста с прозрачным фоном с нарисованными на нём полупрозрачными элементами все пиксели должны отрисовываться корректно. 

Сейчас это не так:


 
Nikolai Semko #:

Артем, это реально не тривиальные задачи, которые требуют новых нейронных связей. Например в SVG есть такое понятие как viewBox. Уже кучу видосов посмотрел как он работает, кучу документации прочитал, кучу кода написал, а до сих пор иногда впадаю в ступор. Нужных нейронных связей до сих пор нет, хотя уже несколько раз казалось, что во всем разобрался. 

Ну мы всё равно в тебя верим ;)
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Обсуждение статьи "Визуализируй это! Графическая библиотека в MQL5 как аналог plot из R"

Anatoli Kazharski, 2023.07.31 17:39

...

Я имел в виду учитывать всё, что находится под холстом, включая и сам график (цвет фона) и цвет его элементов (бары, линии ask/bid и т.д.).

В процессе перемещения этого холста с прозрачным фоном с нарисованными на нём полупрозрачными элементами все пиксели должны отрисовываться корректно. 

Сейчас это не так:


Вот пример, когда один холст (с синим кругом) находится над другим холстом (синий прямоугольник с картинкой) и здесь тоже не учитывается, что нарисовано на холсте, который ниже:


 
Anatoli Kazharski #:

Не удалось найти поиском iDot() или 3DStars, чтобы посмотреть код.

Я имел в виду учитывать всё, что находится под холстом, включая и сам график (цвет фона) и цвет его элементов (бары, линии ask/bid и т.д.).

В процессе перемещения этого холста с прозрачным фоном с нарисованными на нём полупрозрачными элементами все пиксели должны отрисовываться корректно. 

Сейчас это не так:


https://www.mql5.com/ru/forum/227736/page72#comment_25130501

Здесь тоже цвета смешиваются с фоном
https://www.mql5.com/ru/forum/451355/page5#comment_48450810
 
Nikolai Semko #:
https://www.mql5.com/ru/forum/227736/page72#comment_25130501

Здесь тоже цвета смешиваются с фоном
https://www.mql5.com/ru/forum/451355/page5#comment_48450810

Спасибо! Это очень крутые примеры! Значит я ошибался.

Я пока не смотрел подробно код, но почему в стандартном CCanvas прозрачность рисуется не так, как ожидается?

 
Anatoli Kazharski #:

Спасибо! Это очень крутые примеры! Значит я ошибался.

Я пока не смотрел подробно код, но почему в стандартном CCanvas прозрачность рисуется не так, как ожидается?

Там многое, что не так. 
Ощущение, что просто не допилили по причине увольнения программиста, который этим занимался. Возможно ошибаюсь.
 
Nikolai Semko #:
Там многое, что не так. 
Ощущение, что просто не допилили по причине увольнения программиста, который этим занимался. Возможно ошибаюсь.

Николай, а ты можешь сделать список того, что и как желательно изменить в стандартном CCanvas? По твоему мнению. Как есть сейчас, и как должно быть. И почему.

 
Artyom Trishkin #:

Николай, а ты можешь сделать список того, что и как желательно изменить в стандартном CCanvas? По твоему мнению. Как есть сейчас, и как должно быть. И почему.

нужен новый класс, в котором будет меньше функций, чем в CCanvas. Лучше этот класс максимально приблизить к JS canvas, в котором не очень много функций по сути, для простоты изучения и принятия, так как вся айтишка двигается в сторону вэба.
но это в идеале. 
сам бы, наверное, мог написать подобное, но заняло бы не меньше полгода full-time
хотя лично мне далеко не все нравится в JS Canvas, но для стандартизации было бы правильно реализовать что-то подобное с небольшими изменениями, чтоб обойтись без парсинга стрингов.

ЗЫ но для нормальной работы нужно переделать событийную модель MT5, так как она просто ужасная

Холст в MT5 по идее должен работать в два раза производительней, чем JS canvas. Но для этого (для нелагающего интерфейса) много что нужно менять внутри MT5, на что Ренат в жизни не пойдет. 

HTML Canvas Reference
HTML Canvas Reference
  • www.w3schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
 
Nikolai Semko #:

нужен новый класс, в котором будет меньше функций, чем в CCanvas. Лучше этот класс максимально приблизить к JS canvas, в котором не очень много функций по сути, для простоты изучения и принятия, так как вся айтишка двигается в сторону вэба.
но это в идеале. 
сам бы, наверное, мог написать подобное, но заняло бы не меньше полгода full-time
хотя лично мне далеко не все нравится в JS Canvas, но для стандартизации было бы правильно реализовать что-то подобное с небольшими изменениями, чтоб обойтись без парсинга стрингов.

ЗЫ но для нормальной работы нужно переделать событийную модель MT5, так как она просто ужасная

То понятно, что всё "под нож", но всё же вопрос был немного в другом. Что желательно поменять/доработать в уже существующем классе...

 
Artyom Trishkin #:

То понятно, что всё "под нож", но всё же вопрос был немного в другом. Что желательно поменять/доработать в уже существующем классе...

сглаженные методы привести в чувство. Сейчас вроде есть даже функции в CCanvas, которые недокументированы.