程序库: Easy Canvas - 页 15

 
Nikolai Semko #:

如果是在一个矩形物体上,那就不是。
画布也是一个对象。
您只能通过编程将画布对象的内容移动和缩放来将其 "转换 "为矩形对象。
从外观上看,它可以完全像一个矩形对象,在四角用小方块来控制。但在这个社区中,只有少数程序员能够实现这一点,包括我在内。

如果我们谈论的是矩形内部内容的转换,那么我们可以从以下几个方面入手。如果我们谈论的是一个简单的填充或空矩形,任何程序员都能做到。

好的,尼古拉,我明白了。非常感谢!

 
Facundo Laje #:

好的,尼古拉,我明白了。非常感谢!

没问题。

最新版本是 1.47,请点击这里: https://www.mql5.com/ru/code/22164

如果您对该主题感兴趣,我建议您使用谷歌翻译查看该俄语主题:

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

附加的文件:
iCanvas_CB.mqh  57 kb
 

各位同事,大家好!

为什么下面的代码对我不起作用?例如,我想在具有特定条件的条形图上画圆圈。

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 #:

祝你们愉快,同事们!

为什么下面的代码对我不起作用?例如,我想在具有特定条件的条形图上画圆圈。

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();

 }


乍一看,我只发现了一个问题。对于 X 坐标,必须
_X(double (i))
函数 double Canvas.Bar(int x) 返回窗口 x 坐标处的条形图编号
 
Petr Zharuk #:

祝你们愉快,同事们!

为什么下面的代码对我不起作用?例如,我想在具有特定条件的条形图上画圆圈。

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();

 }

我来到我的电脑前:

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 #:

到了电脑前:



干杯,尼古拉

谢谢

 

是否有如何使用粘附力放置文本的实现方法?

对齐之类的类似功能。或者至少有一个获取文本块大小的函数。

 
Petr Zharuk #:

是否实施了如何将文字与坚持相结合?

对齐之类的类似功能。或者至少有一个获取文本块大小的函数。

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

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

 

尼古拉斯,有没有用 Canvas 编写的界面元素进行交互的开发或示例?

例如,有两个 Canvas.Rectangle 按钮。

除了检查鼠标和按钮坐标的选项外,如何检查其中一个是否被点击?

 
Petr Zharuk #:

尼古拉,有没有用 Canva 编写的界面元素进行交互的开发或示例?

例如,有两个按钮 Canvas.Rectangle.X(矩形)和 Canvas.Rectangle.X(矩形)。

除了检查鼠标和按钮坐标的选项外,如何检查其中一个是否被点击?

还没有