チャートの再描画を実行 WindowRedraw 関数

関数

チャート操作関数

WindowRedraw 関数

この関数は、現在のチャートを強制的に再描画します。通常、オブジェクトのプロパティが変更された後に使用されます。

ChartRedraw関数でも同様の処理を行なうことができます。

データ型と構成・戻り値

void WindowRedraw();

戻り値は無し。

引数 [0]

引数無し。

使用例 

WindowRedraw関数による画像の更新

WindowRedraw関数を使って指定した画像を入れ替えます。使用する画像は次の 5枚のビットマップ画像です。

これらの画像を「右クリック」→「名前を付けて画像を保存…」してください。画像の保存先は、使用しているMT4のメニューのファイルから「データフォルダを開く」のフォルダの「MQL4」→「Images」フォルダの中に入れてください。

保存ファイル名は次のコードをそのまま使うのであれば「clock1.bmp」「clock2.bmp」「clock3.bmp」「clock4.bmp」「clock5.bmp」から変えないでください。

コード

// WindowRedraw関数による画像の更新
#property strict
void OnInit() {

   int xpixcel = (int)(ChartGetInteger(0,CHART_WIDTH_IN_PIXELS));               // チャートX軸幅
   int ypixcel = (int)(ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS));              // チャートY軸幅
  
   ObjectCreate(0,"clock",OBJ_BITMAP_LABEL,0,0,0);                              // BMP画像を設定
   ObjectSet("clock",OBJPROP_XDISTANCE,xpixcel/2-46);                           // X軸位置設定
   ObjectSet("clock",OBJPROP_YDISTANCE,ypixcel/2-54);                           // Y軸位置設定   
   ObjectSetInteger(0,"clock",OBJPROP_XSIZE,93);                                // 画像X軸サイズ
   ObjectSetInteger(0,"clock",OBJPROP_YSIZE,108);                               // 画像Y軸サイズ
   
   int Count=1;
   while(true) {
      for(int i=1;i<6;i++) {
         ObjectSetString(0,"clock",OBJPROP_BMPFILE,0,"clock"+(string)i+".bmp"); // 画像の呼出
         WindowRedraw();
         Sleep(200);
      }
      Count++;
      if(Count>5) {
         break;
      }
   }
}
void OnDeinit(const int reason) {
   ObjectsDeleteAll();
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

コードの9行目の「X軸位置設定」の引数「xpixcel/2-46」は画像が真ん中に来るように調整した計算です。「46」は画像のX軸の大きさが「93」ピクセルなので、それを半分にした値です。コードの10行目の「Y軸位置設定」も同様です。

結果

コードの18行目に WindowRedraw関数があるので、削除するかコメント化して有る時と無い時の違いを確認してみてください。

タイトルとURLをコピーしました