Diskussion zum Artikel "Visualisierung! Eine grafische MQL5 Bibliothek ähnlich 'plot' der Sprache R" - Seite 6

 
Nikolai Semko #:
Ich verwende eigentlich mehrere Leinwände (normalerweise nicht mehr als 4).
Es gibt immer einen goldenen Mittelweg. Das eine Extrem ist, alle statischen und alle dynamischen Objekte auf eine Leinwand zu malen, das andere Extrem ist, alle Objekte als separate Leinwände zu malen.
Es ist wichtig, nicht zu vergessen, dass, wenn Sie zwei Leinwände mit Transparenz überlappen einander haben, die CPU, (vielleicht in Win10-11 GPU, aber ich denke, immer noch CPU), wird jedes Pixel auch homogenen (nicht-Null-Transparenz) Hintergrund mischen.
Hier können wir von JS die Praxis der Zwischenspeicherung der Leinwand oder einen Teil davon, um die Leistung zu verbessern leihen.
Was die antialiasing Kreise betrifft, so habe ich bereits eine Variante eines solchen Kreises veröffentlicht, die ideal (in Bezug auf die Leistung) für Kreise mit einem Radius von weniger als ~5 Pixel ist. Ich glaube, die Funktion hieß iDot() und befand sich im 3DStars-Code. Sie ist sehr primitiv und kurz (etwa 10 Zeilen Code). Für Kreise mit größerem Radius ist sie in Bezug auf die Leistung alles andere als optimal. Für größere Radien ist die Hochleistungsfunktion bereits mehr als 100 Zeilen Code.
Ja, nachdem ich jahrelang neue neuronale Verbindungen im Gehirn auf Canvas aufgebaut habe, kann ich jetzt eine Bibliothek auf Canvas auf jeder Ebene erstellen. Es gäbe Zeit und Motivation.
Der Wu-Algorithmus gilt als veraltet.

Ich konnte keine Suche nach iDot() oder 3DStars finden, um den Code zu sehen.

Ich wollte alles berücksichtigen, was sich unter der Leinwand befindet, einschließlich des Diagramms selbst (Hintergrundfarbe) und der Farbe seiner Elemente (Balken, Ask/Bid-Linien, usw.).

Beim Verschieben dieser Leinwand mit transparentem Hintergrund und halbtransparenten Elementen sollten alle Pixel korrekt gezeichnet werden.

Dies ist jetzt nicht der Fall:


 
Nikolai Semko #:

Artem, das sind wirklich keine trivialen Aufgaben, die neue neuronale Verbindungen erfordern. In SVG gibt es zum Beispiel ein Konzept wie viewBox. Ich habe schon viele Videos darüber gesehen, wie es funktioniert, viel Dokumentation gelesen, viel Code geschrieben, und trotzdem bin ich manchmal ratlos. Ich habe immer noch nicht die notwendigen neuronalen Verbindungen, auch wenn es mehrmals so aussah, als hätte ich alles verstanden.

Nun, wir glauben immer noch an dich ;)
 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Diskussion über den Artikel "Visualise it! Grafische Bibliothek in MQL5 als Analogon zu R"

Anatoli Kazharski, 2023.07.31 17:39

...

Ich wollte alles berücksichtigen, was sich unter der Leinwand befindet, einschließlich des Diagramms selbst (Hintergrundfarbe) und der Farbe seiner Elemente (Balken, Ask/Bid-Linien, usw.).

Beim Verschieben dieser Leinwand mit transparentem Hintergrund und darauf gezeichneten halbtransparenten Elementen sollten alle Pixel korrekt gezeichnet werden.

Das ist jetzt nicht der Fall:


Hier ein Beispiel, bei dem eine Leinwand (mit einem blauen Kreis) über einer anderen Leinwand (einem blauen Rechteck mit einem Bild) liegt, und auch hier wird nicht berücksichtigt, was auf der Leinwand darunter gezeichnet wird:


 
Anatoli Kazharski #:

Ich konnte keine Suche nach iDot() oder 3DStars finden, um den Code anzuzeigen.

Ich wollte alles unter der Leinwand berücksichtigen, einschließlich des Diagramms selbst (Hintergrundfarbe) und die Farbe seiner Elemente (Balken, Ask/Bid-Linien, etc.).

Beim Verschieben dieses Canvas mit transparentem Hintergrund und darauf gezeichneten halbtransparenten Elementen sollten alle Pixel korrekt gezeichnet werden.

Dies ist jetzt nicht der Fall:


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

Auch hier werden die Farben mit dem Hintergrund überblendet
https://www.mql5.com/ru/forum/451355/page5#comment_48450810
 
Nikolai Semko #:
h ttps://www.mql5.com/ru/forum/227736/page72#comment_25130501

Auch hier sind die Farben mit dem Hintergrund verschmolzen
https://www.mql5.com/ru/forum/451355/page5#comment_48450810

Ich danke euch! Das sind sehr gute Beispiele! Ich habe mich also geirrt.

Ich habe mir den Code noch nicht im Detail angesehen, aber warum wird die Transparenz nicht wie erwartet im Standard-CCanvas gezeichnet?

 
Anatoli Kazharski #:

Ich danke Ihnen! Das sind wirklich tolle Beispiele! Ich habe mich also geirrt.

Ich habe mir den Code noch nicht im Detail angesehen, aber warum wird die Transparenz nicht wie erwartet im Standard-CCanvas gezeichnet?

Es gibt eine Menge Dinge, die damit nicht stimmen.
Es sieht so aus, als ob sie es nicht fertiggestellt haben, weil der Programmierer, der daran gearbeitet hat, gefeuert wurde. Ich kann mich irren.
 
Nikolai Semko #:
Es gibt eine Menge, was daran falsch ist.
Ich habe das Gefühl, dass sie es einfach nicht fertiggestellt haben, weil der Programmierer, der dafür zuständig war, gefeuert wurde. Ich könnte falsch liegen.

Nikolay, kannst du eine Liste erstellen, was und wie man am Standard-CCanvas ändern sollte? Ihrer Meinung nach. Wie es jetzt ist, und wie es sein sollte. Und warum.

 
Artyom Trishkin #:

Nicholas, können Sie eine Liste von dem, was und wie es wünschenswert ist, in der Standard-CCanvas ändern zu machen? Ihrer Meinung nach. Wie es jetzt ist, und wie es sein sollte. Und warum.

Wir brauchen eine neue Klasse mit weniger Funktionen als in CCanvas. Es ist besser, diese Klasse so nah wie möglich an JS Canvas zu machen, das im Wesentlichen nicht viele Funktionen hat, um das Erlernen und die Übernahme zu erleichtern, da sich die gesamte IT in Richtung Web bewegt.
aber das ist ideal.
Ich könnte so etwas wahrscheinlich selbst schreiben, aber das würde mindestens ein halbes Jahr Vollzeit dauern
obwohl ich persönlich nicht alles in JS Canvas mag, aber für die Standardisierung wäre es richtig, so etwas mit kleinen Änderungen zu implementieren, um auf das Stringparsing zu verzichten.

ZY aber für die normale Arbeit muss ich das MT5 Event Model überarbeiten, da es einfach schrecklich ist

Canvas in MT5 soll doppelt so schnell arbeiten wie JS-Canvas. Aber dafür (für eine nicht verzögernde Schnittstelle) müssen Sie eine Menge Dinge innerhalb MT5 ändern, die Renat nie tun wird.

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 #:

Wir brauchen eine neue Klasse mit weniger Funktionen als CCanvas. Es ist besser, diese Klasse so nah wie möglich an JS Canvas zu machen, das im Wesentlichen nicht viele Funktionen hat, um das Erlernen und die Übernahme zu erleichtern, da sich die gesamte IT in Richtung Web bewegt.
aber das ist ideal.
Ich könnte so etwas wahrscheinlich selbst schreiben, aber es würde mindestens ein halbes Jahr Vollzeit dauern
obwohl ich persönlich nicht alles in JS Canvas mag, aber für die Standardisierung wäre es richtig, etwas Ähnliches mit kleinen Änderungen zu implementieren, um auf String-Parsing zu verzichten.

Aber für die normale Arbeit müssen wir das MT5-Ereignismodell überarbeiten, da es einfach furchtbar ist

Es ist klar, dass alles "unter dem Messer" ist, aber die Frage war doch etwas anders. Was ist es wünschenswert, in der bestehenden Klasse zu ändern/verfeinern...

 
Artyom Trishkin #:

Es ist klar, dass alles "unter dem Messer" ist, aber trotzdem war die Frage ein bisschen anders. Was ist es wünschenswert, in der bestehenden Klasse zu ändern/verbessern...

glatte Methoden, um sie zum Leben zu erwecken. Jetzt denke ich, es gibt sogar Funktionen in CCanvas, die undokumentiert sind.