Leinwand ist cool! - Seite 72

 

Warum sich die Mühe machen, OpenGL und OSG(http://www.openscenegraph.org/) in Canvas zu integrieren.

dann werden nicht nur Sterne fliegen :-)

PS/ als Oberflächen-Opengl können Sie "Ressourcen" oder genauer gesagt Daten für diese verwenden - GL kann nicht nur im Bildschirm zeichnen, sondern einfach in Arrays; d.h. es gibt hier eine gewisse Kompatibilität

The OpenSceneGraph Project Website
  • www.openscenegraph.org
Project website for OpenSceneGraph
 
Danke Nikolai - die MT4-Version wurde kompiliert
 
Jagg #:
Danke Nikolai - MT4 Version wurde kompiliert

Ja.
Aber wie ich vermutet habe, kommt es manchmal vor, dass ein Mausereignis einfriert.
Es ist unwahrscheinlich, dass dieser Fehler von MQ behoben wird. Dies geschieht, wenn die Berechnung innerhalb des OnChartEvents einen bestimmten Wert überschreitet (etwa 10 Millisekunden), woraufhin das OnChartEvent-Ereignis für etwa 300 Millisekunden einfriert.

Dieser Fehler wird durch einen Timer umgangen.

Wenn Sie weniger als 10000 Sterne eingeben (z.B. 5000), kann dieser Fehler nicht auftreten.


PS: Wie versprochen, habe ich den Code zurückgesetzt.

Dateien:
Stars.ex4  27 kb
 
Nochmals vielen Dank Nikolai - mit 3000 funktioniert es perfekt mit MT4
 
Andrey Khatimlianskii #:

Zeigen Sie es also, damit es jeder sofort verstehen kann.)

Hier ein anschauliches Beispiel mit farbigen Sternen.
Auf der linken Seite der gelben Linie befindet sich eine antialiasing Grafik mit Farbmischung mit doppelten Koordinaten.
Rechts, ungeglättet mit int-Koordinaten.

Im Bildschirmfoto ist MaxSizeRadius = 2

Dateien:
3DStars.mq5  12 kb
iCanvas_CB.mqh  53 kb
 

Ich denke, dieser Thread ist der kompetenteste auf Kanvas, also sparen Sie bitte meine Zeit, um das folgende Problem selbst zu lösen.


Es gibt eine bereits generierte Ressource, auf deren Daten über ResourceReadImage/ResourceCreate zugegriffen wird. Die Ressource ist ihre eigene - nicht schreibgeschützt.

Sie müssen einige Textzeilen auf dieses Bild setzen.


Grob gesagt, haben Sie ein Data[]-Array mit Pixeln und Width. Konvertieren Sie Data[] entsprechend.


Gelöst mit TextOut - setzen Sie einfach bereit Data[]-Array gibt, um Text hinzuzufügen.

 
fxsaber #:

SZ Die Lösung ist über TextOut - ein bereits vorbereitetes Data[]-Array zum Hinzufügen von Text wird direkt dorthin geschrieben.

Ja, es gibt nur eine kleine undokumentierte Nuance.
Wenn Sie den Alphakanal verwenden (COLOR_FORMAT_ARGB_NORMALIZE), müssen Sie ihn vor der Erstellung Ihrer Bitmap nicht mit Nullen füllen.

.Erase(0x00FFFFFF);

sonst werden die Kanten der Zeichen "gezackt".

 
Nikolai Semko #:

Ja, nur eine kleine, nicht dokumentierte Nuance.

Ich danke Ihnen!

 

Kann mir jemand sagen, ob es einen fertigen Code für Edit Box on kanvas gibt.

Ich bin ein Gummi-Panel zu machen und brauchen ein solches Element. Wenn man darauf klickt, muss man Zahlen eingeben und löschen können und einen blinkenden Cursor sehen.

Wenn nicht, werde ich eine normale Ersetzung machen, wenn ich darauf klicke.

 
Vitaliy Kuznetsov #:

Kann jemand bitte beraten, wenn es eine fertige Code für Edit Box zu Leinwand.

Ich mache ein Gummi-Panel und brauche ein solches Element. Wenn Sie darauf klicken, müssen Sie eingeben und löschen Zahlen und sehen einen blinkenden Cursor.

Wenn nicht, werde ich eine normale Ersetzung machen, wenn Sie darauf klicken.

Ich bin noch nicht darauf gestoßen, obwohl es vielleicht von jemandem implementiert wurde.
Die Aufgabe ist nicht die schwierigste, aber auch nicht die einfachste.
Auf jeden Fall erfordert eine solche Implementierung fast 1.500 Zeilen in JS.(https://goldfirestudios.com/canvasinput-html5-canvas-text-input)
Ich persönlich habe ein solches Element nicht gebraucht. Denn diese Art, Werte zu ändern (wenn es sich um Zahlen handelt), hat einen großen Nachteil - es ist unmöglich, die Parameter "on the fly" zu ändern, um eine bessere Visualisierung zu erreichen. Slider kann dies gut und die Implementierung von Schiebereglern ist viel einfacher.