Ein Crowdsourced-Projekt auf Canvas durchführen - Seite 31

 
Реter Konow:
Um es mit den Worten zu sagen: Sie werden am Ende einen EA mit einer Schnittstelle haben, auch wenn ein Teil von mir und der andere Teil von Ihnen gemacht wird. Dies hindert Sie nicht daran, die beiden Teile zu einem EA zusammenzufügen.
Sie können aber auch einen anderen Weg einschlagen. Ich werde den Konstruktor veröffentlichen, und Sie werden mit meiner Hilfe die von Ihnen benötigte Benutzeroberfläche entwerfen. Anschließend drucken Sie den Kern aus und setzen ihn in die Engine ein, die Sie in den Expert Advisor einstecken. Das ist sogar noch besser, denn Sie lernen sofort, wie man Grafiken in der Auszeichnungssprache schreibt, und können sie selbst korrigieren.
 
Wie auch immer, das werden wir tun. Ich werde den Konstruktor hier veröffentlichen und lehren , wie man eine Benutzeroberfläche dafür entwickelt. Es gibt noch keine Dokumentation, wenn Sie also Interesse haben, bleiben Sie dran für das Tutorial.

Die Schulung umfasst die folgenden Themen:

1. Erstellen einer funktionalen Benutzeroberfläche.
2. Styling.
3. Drucken und Einfügen der Kernel- und Engine-Datei in die Anwendung (sehr einfach - wie eine Inline).
4. Verbindung von GUI-Elementen mit der Anwendung über die API-Funktionalität (die API-Datei wird automatisch erstellt).

Warten Sie auf die Veröffentlichung in diesem Thread.
 
Реter Konow:
Wie auch immer, das werden wir tun. Ich veröffentliche den Builder und bringe ihm bei, wie man mit der GUI gestaltet. Es gibt noch keine Dokumentation, wenn Sie also Interesse haben, halten Sie Ausschau nach dem Tutorial.

Die Schulung umfasst die folgenden Themen:

1. Erstellen einer funktionalen Benutzeroberfläche.
2. Styles Design.
3. Drucken und Verbinden der Kernel- und Engine-Datei mit der Anwendung (sehr einfach - wie eine Inline).
4. Verbindung von GUI-Elementen mit der Anwendung über die API-Funktionalität (die API-Datei wird automatisch erstellt).

Erwarten Sie eine Veröffentlichung in dieser Branche.

Verstanden!

 
---:

Ich habe das Video nicht aufgenommen, aber ich sende Ihnen ein Beispiel.

Es gibt 600 Dropdown-Listen.

Bewegen Sie die Maus - bei jedem Ereignis und Farbwechsel wird die gesamte CCanvas neu gezeichnet.

Sie können die endgültige Größe in den Bitmap-Eigenschaften sehen - 1500x600 px (im Vergleich zu Ihren 800x500 und 250ms Verzögerung). Das entspricht 900.000 Pixeln, die alle sofort neu gezeichnet werden, so dass keine Sekunde vergeht.

Jede Liste wird zunächst auf einer eigenen Leinwand in ihrer eigenen Größe gerendert (damit sie nicht überläuft) und dann in das Gesamtbild eingepflügt. Wir haben also 600 ResourceCreate-Aufrufe pro Mausereignis.
Das bedeutet, wie Sie an der Reaktionsgeschwindigkeit sehen können, dass die Bilder ausreichen, um Zeichentrickfilme zu zeigen.

MT-Entwickler gaben zufriedenstellendes Werkzeug ohne Lags (ich meine ResourceCreate Bitmaps)

Ist es möglich, dieses Beispiel in Open Source zu sehen?

 
Алексей Барбашин:

Es ist bedauerlich, dass das Projekt nicht weitergeführt wird (

Sie hat sich nicht verändert.

 
Алексей Барбашин:

Ist es möglich, dieses Beispiel in Open Source zu sehen?

Was verstehen Sie nicht an Kanvas?

1. es reagiert auf Ereignisse wie alle anderen grafischen Objekte. Das heißt, Sie können die Mauskoordinaten verfolgen, während sie sich bewegt, und auf Maus- undTastaturklickereignisse reagieren.

2. Es kann die Farbe jedes Pixels unabhängig voneinander ändern.

Was brauchen Sie noch? Und dann braucht man etwas Grips und die Bereitschaft, viel Zeit sinnlos zu verschwenden.

 
Hallo.
 
Dmitry Fedoseev:

Was verstehen Sie nicht an der Arbeit mit einem Kanvas?

1. Es reagiert auf Ereignisse wie alle anderen grafischen Objekte. Das heißt, Sie können die Mauskoordinaten verfolgen, während sie sich bewegt, und auf Maus- undTastaturklickereignisse reagieren.

2. Es kann die Farbe jedes Pixels unabhängig voneinander ändern.

Was brauchen Sie noch? Das nächste, was Sie brauchen, ist etwas Grips und die Lust, viel Zeit zu verschwenden.

Nun, Kanvas selbst reagiert nicht auf Ereignisse. Und die Tatsache, dass man jedes Pixel ändern kann, ist selbstverständlich.

Ich interessierte mich für die Umsetzung einer fragmentierten Neuzeichnung der Leinwand.

Aber es scheint, dass sich viele für eine vollständige Neuzeichnung der Leinwand entschieden haben, auch wenn nur ein kleiner Teil, d. h. ein einzelnes Steuerelement, neu gezeichnet werden muss.

 
Алексей Барбашин:

Nun, der Kanvas selbst reagiert nicht auf Ereignisse. Und die Tatsache, dass man jedes Pixel ändern kann, ist klar.

Ich interessierte mich für die Implementierung des stückweisen Neuzeichnens der Leinwand.

Aber es scheint, dass viele sich für eine vollständige Neuzeichnung der Leinwand entschieden haben, auch wenn nur ein kleiner Teil, z. B. ein Bedienelement, neu gezeichnet werden muss.

Die Leinwand selbst reagiert nicht auf Ereignisse, aber sie existiert auch nicht von selbst.

Fragmentarische Umgestaltung - es lohnt sich, damit anzufangen, und wird klarer werden, wenn es ein solches Ziel gibt. Ich denke, es sollte ein Array von Steuerelementen geben, wobei jedes Steuerelement definierte Grenzen hat. Wenn Sie ein Steuerelement neu zeichnen müssen, müssen Sie alle Steuerelemente durchgehen und sehen, was noch in diesen Bereich fällt, und nur diese neu zeichnen. Zumindest auf diese Weise.

 
Dmitry Fedoseev:

Der Kanvas selbst ist nicht reaktiv, aber er existiert auch nicht von selbst.

Fragmentierte Umgestaltung - es lohnt sich, damit zu beginnen, und es wird klarer werden, wenn es ein solches Ziel gibt. Ich denke, es sollte ein Array von Steuerelementen geben, wobei jedes Steuerelement definierte Grenzen hat. Wenn Sie ein Steuerelement neu zeichnen müssen, müssen Sie alle Steuerelemente durchgehen und sehen, was noch in diesen Bereich fällt, und nur diese neu zeichnen. Zumindest auf diese Weise.

Genau so habe ich es gebaut. Grundsätzlich habe ich die Standardbibliothek als Grundlage genommen, weil sie sehr gut ausgearbeitete Momente der Übertragung von Ereignissen und einige andere Dinge hat. Anatoly schafft Gruppierungen für die verschiedenen Klassen von Elementen, während in der Standardversion alles auf ein Grundobjekt reduziert wird.

Daher enthält WndObject die vollständige Beschreibung der gebräuchlichsten Eigenschaften jedes Steuerelements (Größe, Position, Hintergrundfarbe, Rahmenfarbe, Rahmenstärke, Text, Bild usw. usw.). Außerdem enthält die gleiche Klasse einen Verweis auf das übergeordnete Steuerelement. Das heißt, wenn kein übergeordnetes Objekt für das Steuerelement angegeben ist, erstellt es sein eigenes Kanvas-Objekt auf der Grafik, andernfalls wird es auf dem Kanvas des übergeordneten Objekts gezeichnet. Je nach Position (eigenständig, untergeordnet) werden auch die Koordinaten der Position des Objekts berechnet. Zusätzlich verfügt dasselbe Objekt über ein Array, das die ursprüngliche Beschreibung des übergeordneten Bereichs enthält, der von dem Element belegt wird. Die Idee ist folgende: Wenn sich nur das Element selbst ändert, wird der Pixelbereich mit der Matrix der übergeordneten Pixel gefüllt, bevor es neu gezeichnet wird, und erst dann wird der neue Zustand des Steuerelements angewandt. Bei diesem Ansatz muss nicht jedes Mal die gesamte Leinwand neu gezeichnet werden, da das Neuzeichnen alle Elemente im Array umgeht und rekursiv mit verschachtelten Elementen erfolgt. Für das Rendern und Aktualisieren eines bestimmten Steuerelements schlagen wir zwei Funktionen vor: eine, die beim Erstellen des gesamten Steuerelements über das übergeordnete Steuerelement (oder auf eine leere Leinwand) zeichnet, und eine weitere, die nur die Anzeige des angegebenen Steuerelements aktualisiert. Es geht also folgendermaßen.

Noch "verloren" im Ereignismodell: nach welchen Änderungen müssen welche Ebenen neu gezeichnet werden.

Nikolai zeigt in seinen Beispielen, dass es im Prinzip nicht nötig ist, die Daten lokaler Bereiche zu speichern, weil das Neuzeichnen der gesamten Leinwand so schnell funktioniert, dass es nicht nötig ist, bis ins Detail zu gehen, sondern es reicht, immer alles auf einmal neu zu malen.
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
Grund der Beschwerde: