ValuesFunctionFormat(取得メソッド)

軸上に値を表示するフォーマットを定義する関数へのポインタを取得します。

DoubleToStringFunction  ValuesFunctionFormat()

戻り値

軸上に値を表示するフォーマットを定義する関数へのポインタ

ValuesFunctionFormat(設定メソッド)

軸上に値を表示するフォーマットを定義する関数へのポインタを設定します。

void  ValuesFunctionFormat(
  DoubleToStringFunction  func      // 数値を文字列に変換する関数
  )

パラメータ

func

[in]  数値を文字列に変換するカスタム関数

例:

graphics_close

X軸の値を表示する形式は次のコードを使用して変更されました。

//+------------------------------------------------------------------+
//|                                              DateAxisGraphic.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#include <Graphics\Graphic.mqh>
//--- array for store values
double arrX[];
double arrY[];
//+------------------------------------------------------------------+
//| X軸に値を作成するカスタム関数                                           |
//+------------------------------------------------------------------+
string TimeFormat(double x,void *cbdata)
 {
  return(TimeToString((datetime)arrX[ArraySize(arrX)-(int)x-1]));
 }
//+------------------------------------------------------------------+
void OnStart()
 {
  MqlRates rates[];
  CopyRates(Symbol(),Period(),0,100,rates);
  ArraySetAsSeries(rates,true);
  int size=ArraySize(rates);
  ArrayResize(arrX,size);
  ArrayResize(arrY,size);
  for(int i=0; i<size;++i)
    {
     arrX[i]=(double)rates[i].time;
     arrY[i]=rates[i].close;
    }
//--- グラフィックを作成する
  CGraphic graphic;
  if(!graphic.Create(0,"DateAxisGraphic",0,30,30,780,380))
    {
     graphic.Attach(0,"DateAxisGraphic");
    }
//--- 曲線を作成する
  CCurve *curve=graphic.CurveAdd(arrY,CURVE_LINES);
//--- X軸を取得する
  CAxis *xAxis=graphic.XAxis();
//--- X軸プロパティを設定する
  xAxis.AutoScale(false);
  xAxis.Type(AXIS_TYPE_CUSTOM);
  xAxis.ValuesFunctionFormat(TimeFormat);
  xAxis.DefaultStep(20.0);
//--- プロット
  graphic.CurvePlotAll();
  graphic.Update();
 }