MetaTrader 5のグラフィック: Canvas - オブジェクトスナップを用いたバッファ内でのグラフィック作成

 

新たなリソース作成機能がbuild 619に登場しました。 ダイナミックなグラフィックリソースがすばやく作成できます。

新機能により、アルファチャンネルを含む複雑な32 bitグラフィックの作成、表オブジェクトへの貼り付けができるようになりました。

開発者へのメリット

  • プログラムは多くのファイルを運ぶことなく、美しいインターフェイスをすばやく作成できます。

  • 追加のリソースファイル(BMP、WAVに限らず)を# Resource "ファイル名" ディレクティヴを用いて、EX5 ファイルに直接追加できるほか、ランタイム時の読み込み、オブジェクトへの変更、適応も可能です。

    ResourceLoad() 機能も近日中に公開予定のビルドで利用可能になります。それによりEX5 ファイルに以前追加したリソースの読み込みが可能になります。
  • アルファチャンネルで透明度を調節することにより、どんな解析グラフでも表の上に重ねることができます。

    例えば、色彩と彩度の調節で、半透明のクラウドを市場の動向予測とともに作成できます。
  • 表に何でも描けるようになります

近日中にCCanvasクラスをスタンダードライブラリに追加予定です。このクラスはクラス自身のバッファに作成し関連オブジェクトへ出力することで、グラフィックの手軽な操作を可能にします。

クラス動作を示す簡易スクリプトは以下の通りです。(添付ファイル有)

#include "Canvas.mqh"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   CCanvas can;
//---
   can.Create("MySpace",0,0,512,512,COLOR_FORMAT_ARGB_RAW);
   MathSrand(0);
//---
   for(int i=0;i<10000;i++)
     {
      can.FillRect(MathRand()&255,MathRand()&255,256+(MathRand()&255),256+(MathRand()&255),XRGB(MathRand(),MathRand(),MathRand()));
      can.Circle(MathRand()&511,MathRand()&511,MathRand()&127,XRGB(MathRand(),MathRand(),MathRand()));
      can.Triangle(MathRand()&511,MathRand()&511,MathRand()&511,MathRand()&511,MathRand()&511,MathRand()&511,XRGB(MathRand(),MathRand(),MathRand()));
      //---
      can.Update();
     }
//---
  }