Bibliotheken: Easy Canvas - Seite 15

 
Nikolai Semko #:

Wenn es sich buchstäblich um ein rechteckiges Objekt handelt, dann nicht.
Die Leinwand ist auch ein Objekt.
Sie können ein Canvas-Objekt nur in ein rechteckiges Objekt "umwandeln", indem Sie seinen Inhalt zum Verschieben und Skalieren programmieren.
Optisch kann es genau wie ein rechteckiges Objekt mit kleinen Quadraten in den Ecken aussehen, um es zu steuern. Aber nur wenige Programmierer in dieser Gemeinschaft werden in der Lage sein, dies zu implementieren, mich eingeschlossen.

Wenn wir über die Transformation des internen Inhalts des Rechtecks sprechen. Wenn es sich um ein einfaches gefülltes oder leeres Rechteck handelt, kann das jeder Programmierer tun.

Ok Nikolai, verstanden. Ich danke Ihnen vielmals!

 
Facundo Laje #:

Ok Nikolai, verstanden. Ich danke Ihnen vielmals!

Kein Problem.

Die neueste Version ist 1.47 hier: https://www.mql5.com/ru/code/22164

Wenn Sie sich für dieses Thema interessieren, empfehle ich Ihnen, sich diesen russischsprachigen Thread mit Google Translate anzusehen:

https://www.mql5.com/ru/forum/227736

Dateien:
iCanvas_CB.mqh  57 kb
 

Guten Tag, liebe Kollegen!

Warum funktioniert der folgende Code bei mir nicht? Ich wollte zum Beispiel Kreise über Balken zeichnen, die bestimmte Bedingungen haben.

void  OnTimer()

 {

    Canvas.Erase(0x00FFFFFF);

      for(int i = 0; i < 100 ; i++)

       {

        if(iClose(_Symbol, PERIOD_CURRENT, i + 1) > iClose(_Symbol, PERIOD_CURRENT, i + 2))

         {

          Canvas.Circle((int)_X(Canvas.Bar(i + 1)), (int)_Y(Canvas.Price(iClose(_Symbol, PERIOD_CURRENT, i + 1))), 5, 0x88ff9999);

         }

       }

  Canvas.Update();

 }


 
Petr Zharuk #:

Gute Zeit, Kollegen!

Warum funktioniert der folgende Code bei mir nicht? Ich wollte zum Beispiel Kreise über Balken zeichnen, die bestimmte Bedingungen haben.

void  OnTimer()

 {

    Canvas.Erase(0x00FFFFFF);

      for(int i = 0; i < 100 ; i++)

       {

        if(iClose(_Symbol, PERIOD_CURRENT, i + 1) > iClose(_Symbol, PERIOD_CURRENT, i + 2))

         {

          Canvas.Circle((int)_X(Canvas.Bar(i + 1)), (int)_Y(Canvas.Price(iClose(_Symbol, PERIOD_CURRENT, i + 1))), 5, 0x88ff9999);

         }

       }

  Canvas.Update();

 }


Auf den ersten Blick sehe ich nur ein Problem. Für die X-Koordinate ist es notwendig:
_X(double (i))
Die Funktion double Canvas. Bar(int x) gibt die Taktnummer an der x-Koordinate des Fensters zurück
 
Petr Zharuk #:

Gute Zeit, Kollegen!

Warum funktioniert der folgende Code bei mir nicht? Ich wollte zum Beispiel Kreise über Balken zeichnen, die bestimmte Bedingungen haben.

void  OnTimer()

 {

    Canvas.Erase(0x00FFFFFF);

      for(int i = 0; i < 100 ; i++)

       {

        if(iClose(_Symbol, PERIOD_CURRENT, i + 1) > iClose(_Symbol, PERIOD_CURRENT, i + 2))

         {

          Canvas.Circle((int)_X(Canvas.Bar(i + 1)), (int)_Y(Canvas.Price(iClose(_Symbol, PERIOD_CURRENT, i + 1))), 5, 0x88ff9999);

         }

       }

  Canvas.Update();

 }

Ich habe mich an meinen Computer gesetzt:

void  OnTimer()
  {
   Canvas.Erase(0x00FFFFFF);
   for(int i = (int)W.Right_bar; i <= W.Left_bar ; i++)
     {
      if(iClose(_Symbol, _Period, i) > iClose(_Symbol, _Period, i + 1))
        {
         Canvas.FillCircle((int)_X((double)i), (int)_Y(iClose(_Symbol, _Period, i)), 5, 0x88ff9999);
        }
     }
   Canvas.Update();
  }



 
Nikolai Semko #:

an den Computer gelangt:



Prost Nikolai!

Ich danke dir.

 

Gibt es eine Implementierung, wie man Text mit Adhäsion platzieren kann?

Ein Analogon von Align oder so. Oder zumindest eine Funktion, die die Größe des Textblocks ermittelt.

 
Petr Zharuk #:

Gibt es eine Umsetzung, wie man Text mit Anhaftung platziert?

Ein Analogon von Align oder so. Oder zumindest eine Funktion, die die Größe des Textblocks erhält.

https://www.mql5.com/de/docs/standardlibrary/canvasgraphics/ccanvas/ccanvastextsize

https://www.mql5.com/de/docs/standardlibrary/canvasgraphics/ccanvas/ccanvastextout

 

Nicholas, gibt es irgendwelche Entwicklungen oder Beispiele für die Interaktion mit in Canvas geschriebenen Oberflächenelementen?

Zum Beispiel gibt es zwei Schaltflächen Canvas.Rectangle.

Wie kann man überprüfen, ob eine von ihnen angeklickt wurde, abgesehen von der Möglichkeit, die Koordinaten von Maus und Schaltfläche zu überprüfen?

 
Petr Zharuk #:

Nikolay, gibt es irgendwelche Entwicklungen oder Beispiele für die Interaktion mit in Canva geschriebenen Oberflächenelementen?

Zum Beispiel gibt es zwei Schaltflächen Canvas.Rectangle.

Wie kann man überprüfen, ob eine von ihnen angeklickt wurde, abgesehen von der Möglichkeit, die Koordinaten von Maus und Schaltfläche zu überprüfen?

Noch nicht