Leinwand ist cool! - Seite 2

 
fxsaber:

CCanvas ist ein Wrapper für ResourceCreate. Wenn Sie also zum Beispiel 20 fertige Bilder in Form von Arrays haben. Wenn Sie sie über Canvas ändern wollen, müssen Sie teure ArrayCopy+Update machen.

Und wenn Sie es ohne CCanvas machen, brauchen Sie nur ResourceCreate+ChartRerdraw. Ich habe mehrere Aufträge zum dynamischen Zeichnen in kodobase veröffentlicht. Es war offensichtlich, dass CCanvas nicht gut war.

Ich stimme zu, dass es eine Ressourcenverpackung ist. Wir müssen uns auf Definitionen einigen. Canvas, so wie ich es verstehe, ist keine CCanvas-Klasse, sondern eine rechteckige Grafikressource, d. h. ein Array von Punkten. Was ich von der CCanvas-Klasse brauche, sind ein paar Funktionen zum Erstellen, Aktualisieren und Löschen. Sie ist recht intelligent implementiert, die anderen Funktionen halte ich aufgrund der pixeligen (ungeglätteten) Implementierung für nutzlos. Außerdem interessiere ich mich für Kanvas als Vektorgrafik, nicht als Bitmap, d. h. wenn ich das Bild selbst gestalte, anstatt Bilder herunterzuladen. Daher sehe ich keinen praktischen Nutzen für 20 vorgefertigte Bilder und ich kann ihn nicht als Videoplayer mit MT5 verwenden. Das Ziel von Vektorgrafiken ist es, ein Bild in weniger als 30 (oder besser weniger als 10) Millisekunden zu rendern. Da das menschliche Auge ohnehin nicht mehr als 30 Mal pro Sekunde einen Bildwechsel wahrnimmt. Grundsätzlich bewältigt Kanvas im MT5 diese Aufgabe gut. Zwar sind diese Farbwirbel am Limit (d.h. ein Frame wird auf meinem durchschnittlichen Laptop etwa 30 Millisekunden gebildet), aber auf MT4 wird es schon langsamer.

Ich mache jetzt eine CCanvasPro-Klasse, wenn es die Zeit erlaubt, in der ich die Dinge ein bisschen besser machen will.
Hier ist, was ich bis jetzt mit den Kreisen (mit Schatten geglättet) habe. Entschuldigung, ich habe den Code noch nicht geöffnet. Wegen unzureichender Menge an freiem Speicherplatz.

Auch dies ist ein Skript.

Dateien:
 
Evgeniy Zhdan:
Coole Regenbogenkarte! Ich würde auch gerne die Kerzen zu Musik tanzen lassen und sie zwischen sich selbst drehen!

Wird es die Gewinne steigern?) Ein Bonus für jeden Tanz, dann bin ich dabei.)))

 
Nikolai Semko:

Natürlich wird es helfen, aber die Bremsen werden schrecklich sein.

Es wird eine leichte Verlangsamung geben, aber keine schreckliche Bremsung. Zumindest visuell hat sich nichts geändert.


 
Rashid Umarov:

Es wird eine leichte Verlangsamung geben, aber keine schreckliche Bremsung. Zumindest visuell hat sich nichts geändert.


Natürlich war ich ein bisschen hart. Dennoch wird sie etwa 10 % langsamer sein als die Gesamtleistung.

 
Rashid Umarov:

Es wird eine leichte Verlangsamung geben, aber keine schreckliche Bremsung. Zumindest visuell hat sich nichts geändert.


Nicht bei der Profilerstellung, sondern mitGetMicrosecondCount geprüft

Es stellte sich heraus, dass bei 1000 Frames eine Verlangsamung von 3-4% auftrat. Im Prinzip ja, aber nicht sehr kritisch.

while(!IsStopped())
     {
      static ulong t0=GetMicrosecondCount();
      int pos=int(i%size);
      if(pos==0)
        {
         C.Update();
         //Sleep(30);
         X1= Width-(sin((double)j/100)*(double)Width);
         Y1= Height-(cos((double)j/140)*(double)Height);
         X2= Width+(cos((double)j/80)*(double)Width);
         Y2= Height+(sin((double)j/20)*(double)Height);
         if (j==101000) Print(GetMicrosecondCount()-t0);
         j++;
        }
      int X=pos%Width;
      int Y=int(pos/Width);
      double d= ((X1-X)*(X1-X)+(Y1-Y)*(Y1-Y))/(((X1-X)*(X1-X)+(Y1-Y)*(Y1-Y))+((X2-X)*(X2-X)+(Y2-Y)*(Y2-Y)));
      //C.m_pixels[pos]=XRGB(h[int(d*11520)],h[int(d*17920)],h[int(d*6400)]);
      C.PixelSet(X,Y,XRGB(h[int(d*11520)],h[int(d*17920)],h[int(d*6400)]));
      i++;
     }


 
Nikolai Semko:

Ich habe mir eine Aufgabe gestellt: die Möglichkeiten von benutzerdefinierten Grafiken über die CCanvas-Klasse in einem kurzen Code zu demonstrieren.

Folgendes ist dabei herausgekommen.

Dieses Skript funktioniert sowohl in MQL5 als auch in MQL4. Aber auf MT5 geht es viel schneller.

Jedes Bild ist einmalig und wird nicht wiederholt, d. h. das Skript ist nicht zyklisch.


Sie sollten das Array m_pixels[] in Canvas.mqh vor dem Kompilieren von protected: nach public verschieben:

eine halbe Stunde beobachten und darauf warten, dass das Ding abhebt ))

 
Alexey Volchanskiy:

eine halbe Stunde lang beobachten und darauf warten, dass das Ding abhebt ))

:))
 

Ehrlich gesagt, verstehe ich nicht, was das soll.

Nun, ja, schön, bunt, schillernd... Aber wie wird sich das auf die Arbeit des Sachverständigen auswirken?

Ich würde es verstehen, wenn wir hier wären, um das Spiel zu schreiben - da wäre eine solche Gelegenheit ach, wie begehrt... Aber hier...

Meiner Meinung nach ist genau das Gegenteil notwendig - um alle unnötigen Aktionen loszuwerden, so dass der resultierende Code das System so wenig wie möglich belastet (würde Geld in der Cloud erfordern). Und sie muss auch leichter zu warten sein.

Es sei denn - "Aha-Effekt" für Kunden... Ich glaube, es stimmt, mit einer gut gestalteten Ausgabe kann man als Freelancer mehr Geld verdienen...

 
Sehr cool, danke, jetzt wird der Handel im wahrsten Sinne des Wortes viel besser laufen.
 
George Merts:

Ehrlich gesagt, verstehe ich nicht, was das soll.

Nun, ja, schön, bunt, schillernd... Aber wie wird sich das auf die Arbeit des Sachverständigen auswirken?

Ich würde es verstehen, wenn wir hier wären, um das Spiel zu schreiben - da wäre eine solche Gelegenheit ach, wie begehrt... Aber hier...

Meiner Meinung nach ist genau das Gegenteil notwendig - um alle unnötigen Aktionen loszuwerden, so dass der resultierende Code das System so wenig wie möglich belastet (würde Geld in der Cloud erfordern). Und sie muss auch leichter zu warten sein.

Es sei denn - "Aha-Effekt" für Kunden... Ich glaube, es stimmt, mit einer gut gestalteten Ausgabe kann man als Freelancer mehr Geld verdienen...

Es könnte sich als nützlich für Indikatoren erweisen. Auf der Leinwand waren verschiedene Pfeilanzeigen eingezeichnet, es gab sogar einen Artikel.