描画テキストを設定 TextSetFont 関数

関数

オブジェクト関数

TextSetFont 関数

 この関数は、チャート上のテキストオブジェクトのフォントスタイルを設定します。デフォルトでは、サイズが-120(12pt)の Arialフォントが使用されます 。

データ型と構成・戻り値

bool TextSetFont(①, ②, ③, ④);

 戻り値は、処理が成功した場合は true、それ以外は falseが返されます。

考えらえる発生するエラーとして次の2つがあります。
ERR_INVALID_PARAMETER_VALUE (4003)
 名前が NULL または “” (空の文字列) を示します。

ERR_OBJECT_DOES_NOT_EXIST (4202)
 オペレーティングシステムエラー (存在しないフォントを作成しようとしたなど)。

引数 [4]

 TextSetFont関数は 4個の引数で構成されます。


引数名データ型単位初期値説明
nameconst string設定するフォント名。
sizeint設定するフォントサイズ。
フォントサイズは正または負の数で指定します。正の数を設定すれば、テキストの大きさはパソコンの設定に関係なく一定です。しかし、負の数を設定すると、大きさはパソコンのフォント設定に影響され、そしてその数値は1/10ポイント単位で設定されます。
flagsuint0設定するフォントスタイル。こちらのフラグから選択してください。
orientationint0テキストの傾き。
X軸に対するテキストの傾き角度です。単位は 0.1 度。450=45度の角度を意味します。

 引数①のフォント名は、MetaEditorにあるフォント名を設定することができます。コピーして引数①の ” ” の中にペーストしてください。

 引数③のフラグは次のとおりです。

フォントスタイルを指定するフラグ

フラグ名説明
FONT_ITALICイタリック (斜体)
FONT_UNDERLINE下線
FONT_STRIKEOUT取り消し線

フォントスタイルの幅(太さ)を指定するフラグ

フラグ名説明
FW_DONTCAREフォントの太さについて特に指定しない
FW_THIN極めて細い文字
FW_EXTRALIGHT非常に細い文字
FW_ULTRALIGHT非常に細い文字
FW_LIGHT細い文字
FW_NORMAL標準的な太さの文字
FW_REGULAR標準的な太さの文字
FW_MEDIUM中程度の太さの文字
FW_SEMIBOLD半太字の文字
FW_DEMIBOLD半太字の文字
FW_BOLD太字の文字
FW_EXTRABOLD非常に太い文字
FW_ULTRABOLD非常に太い文字
FW_HEAVY極めて太い文字
FW_BLACK極めて太い文字
※日本語で使用の場合は、正常に対応しないことがあるのでご注意ください。

使用例

TextSetFont関数によるフォントの設定

 チャート上にテキストオブジェクトを設置した時のフォントスタイルを TextSetFont関数で設定します。

 次のコードはインジケータ用のコードです。インジケータ用コードの作成方法についてはこちらを参考にしてください。

コード

// TextSetFont関数によるフォントの設定
#property strict
#property indicator_chart_window     // メインウィンドウに表示

#define IMG_WIDTH  150               // 描画 幅  pixel
#define IMG_HEIGHT 150               // 描画 高さpixel

uint ExtImg[IMG_WIDTH * IMG_HEIGHT]; // 描画 配列(バッファ)
int i=0;

void OnInit() {
   ObjectsDeleteAll();
   ArrayFill(ExtImg, 0, IMG_WIDTH * IMG_HEIGHT, 0);
   ObjectCreate(0, "TEST", OBJ_BITMAP_LABEL, 0, 0, 0);
   ObjectSetString(0, "TEST", OBJPROP_BMPFILE, "::IMG"); 
}

void OnDeinit(const int reason) { //終了処理
   ObjectsDeleteAll();            // オブジェクトテキストをEA削除時消すための処理
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   ArrayFill(ExtImg, 0, IMG_WIDTH * IMG_HEIGHT ,0);
   
   TextSetFont("MS ゴシック", 20, FONT_UNDERLINE|FW_EXTRABOLD, 450);   
   
   string text = "Tick数" + (string)i++;
   TextOut(text, 30, 100, TA_LEFT|TA_TOP, ExtImg, IMG_WIDTH, IMG_HEIGHT, clrWhite, COLOR_FORMAT_XRGB_NOALPHA);
   
   ResourceCreate("::IMG", ExtImg, IMG_WIDTH, IMG_HEIGHT, 0, 0, IMG_WIDTH, COLOR_FORMAT_XRGB_NOALPHA);
   ChartRedraw();
   
   return(rates_total);
}

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

結果 

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