ライブラリ: イージーキャンバス - ページ 15

 
Nikolai Semko #:

文字通り長方形のオブジェクトの上なら、そうではない。
キャンバスもオブジェクトです。
キャンバスオブジェクトを矩形オブジェクトに「変換」できるのは、プログラム上だけです。
視覚的には、四隅に小さな正方形を配置した矩形オブジェクトのように見えます。しかし、これを実装できるプログラマーは、このコミュニティでは私を含めて数人しかいないだろう。

もし矩形の内部コンテンツの変換について話しているのであれば。単純な塗りつぶしや空の矩形のことなら、どんなプログラマーでもできる。

わかりました。ありがとう!

 
Facundo Laje #:

ニコライ、わかったよ。ありがとう!

問題ありません。

最新バージョンは1.47です: https://www.mql5.com/ru/code/22164

このトピックに興味があるなら、このロシア語スレッドをGoogle翻訳で見ることをお勧めします:

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

 }


一見したところ、1つだけ問題があります。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 #:

パソコンに向かった:



ニコライに乾杯!

ありがとう。

 

テキストを接着して配置する方法の実装はありますか?

Alignのアナログか何か。少なくともテキストブロックのサイズを取得する関数とか。

 
Petr Zharuk #:

テキストをどのように配置するかという実装はありますか?

Alignのアナログか何か。少なくともテキストブロックのサイズを取得する関数とか。

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

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

 

ニコラス、Canvasで書かれたインターフェイス要素とのインタラクションの開発や例はありますか?

例えば、2つのボタンCanvas.Rectangleがあります。

マウスとボタンの座標をチェックするオプションを除いて、そのうちの1つがクリックされたかどうかをチェックする方法は?

 
Petr Zharuk #:

ニコライ、Canvaで書かれたインターフェイス要素とのインタラクションの開発や例はありますか?

例えば、2つのボタンがあります。

マウス座標とボタン座標をチェックするオプション以外で、どちらかがクリックされたかどうかをチェックする方法はありますか?

まだありません。