Bibliotheken: Easy Canvas - Seite 17

 
Nikolai Semko #:
Neueste Version 1.53

Nicholas, gerade heruntergeladen die lib, wird es versuchen, sehr interessant und danke! Und in der ZIP in kodobase ist noch die alte Version 1.09!!!! Gut, dass ich die Kommentare gelesen und direkt heruntergeladen habe. Wenn ich Sie wäre, würde ich auf jeden Fall über diese herausragende Fehler in der MT5, mql5, mql5.com Thread Verbesserungsvorschläge posten !

MT5, mql5, mql5.com предложения по улучшению. - Сделайте реалистичные предложения по улучшению платформы MT5, языка mql5 и сайта и услуг Mql5 Com.
MT5, mql5, mql5.com предложения по улучшению. - Сделайте реалистичные предложения по улучшению платформы MT5, языка mql5 и сайта и услуг Mql5 Com.
  • 2013.06.15
  • www.mql5.com
удерживая клавишу CTRL при перетаскивании точки привязки. Модифицировать OnChartEvent для обработки нажатия на кнопку. Всплывающее окно появляется автоматически после третьего символа или вы можете вызвать его с помощью CTRL SPACE
 
Alexey Volchanskiy #:

Nicholas, habe gerade die Lib heruntergeladen, werde sie ausprobieren, sehr interessant und danke! Und in der ZIP in kodobase gibt es noch eine alte Version 1.09!!!! Gut, dass ich die Kommentare gelesen und direkt heruntergeladen habe. Wenn ich Sie wäre, würde ich auf jeden Fall über diese herausragende Fehler in der MT5, mql5, mql5.com Thread Verbesserungsvorschläge posten !

Danke Alexey!
habe ich schon vor mehr als 4 Jahrengeschrieben.

 
Nicholas, ist es möglich, Ihre Bibliothek zu verwenden, um dynamisch wechselnde "Rechtecke" zu zeichnen, die an Kerzen gebunden sind und die derzeit verwendeten Objekte vom Typ OBJ_RECTANGLE ersetzen. Es ist notwendig, die Überlappung von Rechtecken (d.h. das Vorhandensein von Transparenz) auf eine visuell schöne Weise darzustellen.
Vielleicht gibt es ein Beispiel für eine solche Verwendung?
 
Peter Vorobyev OBJ_RECTANGLE ersetzen. Es ist notwendig, die Überlappung von Rechtecken (d.h. das Vorhandensein von Transparenz) auf eine visuell schöne Weise darzustellen.
Vielleicht gibt es ein Beispiel für eine solche Verwendung?

Natürlich kann man das, aber es kommt darauf an, in welchem Fall.
Wenn es nicht viele Rechtecke gibt (~<1000) und sie nicht oft in der Größe verändert werden müssen, kann man mit dem Standard-CCanvas auskommen. In diesem Fall ist jedes Rechteck ein separates Canvas, das an Preis-Zeit-Koordinaten gebunden ist. Es ist notwendig, sich um das "Aufräumen" zu kümmern, damit sich die Objekte nicht unkontrolliert vermehren.
Wenn es viele Objekte gibt und diese häufig ihre Eigenschaften ändern, ist es einfacher, diese Bibliothek zu verwenden.
In diesem Fall erstellen Sie ein Array von Strukturen - virtuelle Rechtecke mit den erforderlichen Eigenschaften - und zeigen sie auf dem sichtbaren Diagramm an, wenn sich das Diagramm ändert oder wenn sich irgendwelche Eigenschaften ändern.
Dies ist die produktivste Variante, und das Kanvas-Objekt (Bitmap) wird hier eines sein, das sich über den gesamten Bildschirm erstreckt. Bei dieser Variante kommt es jedoch zu einer leichten Verzögerung der grafischen Objekte des Diagramms während des vertikalen und horizontalen Scrollens.


Ein passendes Beispiel kann vielleicht aus der gleichen Bibliothek Test_iCanvas.mq5 entnommen werden. In diesem Beispiel gibt es ein halbtransparentes Rechteck mit Text, der an Balken gebunden ist. Wenn Sie möchten, dass sich die Farben der halbtransparenten Rechtecke beim Überlappen mischen, benötigen Sie eine Funktion für ein solches Rechteck. Wenn Sie es brauchen, kann ich Ihnen helfen, es schnell zu tun, oder Sie können es selbst tun, indem Sie die Funktion von iCanvas LineDA Klasse, LineHorizontalA ist besser.

ZY nein das Beispiel Test_iCanvas.mq5 ist nicht sehr geeignet, weil ich dort alles auf eine krumme Art durch einen Timer implementiert habe. Ich muss dieses Beispiel neu schreiben. Es war eine dumme Lösung, die mich verwirrt hat.
Nun, schauen Sie sich weitere Beispiele hier und hier an . Aber in diesen Beispielen gibt es keine Bindung an den Preis pro Zeit. Dafür müssen Sie X- und Y-Funktionen verwenden, um Preis-Zeit-Koordinaten in XY-Koordinaten zu übersetzen.
 
Vielen Dank für die ausführliche Antwort.
planen Sie, in Ihrer Bibliothek ein Objekt - Rechteck zu implementieren, das das Zeichnen eines Rechtecks (Erstellen/Verschieben/Ändern) mit bestimmten Eigenschaften wie ein gewöhnliches grafisches Objekt ermöglicht?
 
Peter Vorobyev ein Rechteck zu zeichnen (erstellen/verschieben/verändern) mit bestimmten Eigenschaften wie ein gewöhnliches grafisches Objekt?

Es ist nicht ganz klar, was Sie meinen.

Es gibt verschiedene Funktionen zum Zeichnen von Rechtecken. Es reicht zu erstellen, zu verschieben und zu ändern.

Ja, Sie können ein beliebiges Objekt als Struktur oder Klasse in Ihrem Code von Drittanbietern erstellen, in den Sie eine Methode zur Ausgabe auf dem Bildschirm unter Verwendung dieser Klasse iCanvas oder CCanvas schreiben können, aber es hat keinen Sinn, alle möglichen Varianten von Implementierungen innerhalb der Grafikbibliothek zu erstellen. Nur die Primitive sind wichtig. Ich habe natürlich meine eigene erweiterte Funktion dieser Bibliothek. Sie ist um ein Vielfaches größer als diese, aber niemand außer mir wird sie verstehen. Ich habe sie für mich selbst geschrieben.

 
Nikolai Semko #:

Ich bin mir nicht ganz sicher, was Sie meinen.

Es gibt verschiedene Funktionen zum Zeichnen von Rechtecken. Es reicht aus, sie zu erstellen, zu verschieben und zu verändern.

Ja, Sie können ein beliebiges Objekt als Struktur oder Klasse in Ihrem Drittanbietercode erstellen, in das Sie eine Methode zur Ausgabe auf dem Bildschirm unter Verwendung dieser Klasse iCanvas oder CCanvas schreiben können, aber es macht keinen Sinn, alle möglichen Varianten von Implementierungen innerhalb der Grafikbibliothek zu erstellen. Nur die Primitive sind wichtig. Ich habe natürlich meine eigene erweiterte Funktion dieser Bibliothek. Sie ist um ein Vielfaches größer als diese, aber niemand außer mir wird sie verstehen. Ich habe sie für mich selbst geschrieben.

Danke, ich verstehe. Wenn ich mich näher mit der Bibliothek vertraut gemacht habe und wenn es eine spezielle Frage gibt, werde ich sie stellen.

 
Peter Vorobyev #:

Danke, ich verstehe. Ich werde mich mit der Bibliothek näher vertraut machen, und wenn ich eine spezielle Frage habe, werde ich sie stellen.

Hier ist ein passendes EA-Beispiel für Sie:

#include <Canvas\iCanvas_CB.mqh> //https://www.mql5.com/de/code/22164

//+------------------------------------------------------------------+
int OnInit() {
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {}
//+------------------------------------------------------------------+
void OnTick() {
   Draw();
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam) {
   if (id == CHARTEVENT_CHART_CHANGE || id == CHARTEVENT_MOUSE_MOVE) Draw();
}
//+------------------------------------------------------------------+
void Draw() {
   static uint last = 0;         //
   uint cur = GetTickCount();    // Erforderlich für die Leistungsoptimierung
   if (cur-last<25) return;      // Besonders wichtig für den Prüfer
   last = cur;                   //
   if (Canvas.tester) ChartChanged();   // für den korrekten Betrieb im Prüfgerät.
   Canvas.Erase(0x00FFFFFF);   // eine solche Maske ist für eine korrekte Schriftausgabe notwendig
   Canvas.CurentFont("Calibri Light", 16,16,0xFF000000);
   for (int shift = -1000; shift<=1000; shift+=50 ) {
      uint clr = (Canvas.Grad((shift+1000.0)/2000.0) & 0x00FFFFFF)|0x40000000;
      int bar = Round(Canvas.Bar(double(_MouseX+shift)));
      double price  = iHigh(_Symbol,PERIOD_CURRENT,bar);
      int x = int(Canvas.X(double(bar)));
      int y = (int)_Y(price);
      Canvas.FillRectangleA(x,y,x+150,y-60,clr);
      
      _CommXY(x+5,y-55,"high = "+DoubleToString(price,_Digits));
      _Comment("bar = "+(string)bar);
      _Comment("time = " + TimeToString(iTime(_Symbol,PERIOD_CURRENT,bar))); 
   }
   Canvas.Update();
}


iCanvas Version 1.54 ist erforderlich, um zu funktionieren.

Dateien:
 
Nikolai Semko #:

iCanvas Version 1.54 ist für den Betrieb erforderlich

Nikolai Semko #:
Neueste Version 1.53

Ich bin auch interessiert.

 
Edgar Akhmadeev #:

Das habe ich mich auch schon gefragt.

Bereits aktualisiert und im vorherigen Beitrag angehängt