TextOut

この関数は、カスタム配列(バッファー)にテキストを表示し、その操作の結果を返します。配列は、グラフィカルリソースを作成するように設計されています。

bool  TextOut(
   const string        text,          // displayed text
   int                 x,             // X coordinate 
   int                 y,             // Y coordinate 
   uint                anchor,        // anchor type
   uint                &data[],       // output buffer
   uint                width,         // buffer width in pixels
   uint                height,        // buffer height in pixels
   uint                color,         // text color
   ENUM_COLOR_FORMAT   color_format   // color format for output
   );

パラメーター

テキスト

[in]バッファに書き込まれる表示テキスト。1行のテキストのみが表示されます。

x

[in]表示されたテキストのアンカーポイントのX座標。

y

[入力]表示されたテキストのアンカーポイントのY座標。

アンカー

[in]表示されるテキストのアンカーポイント位置の9つの事前定義済みメソッドのうちの値。値は2つのフラグの組み合わせによって設定されます—水平および垂直のテキストのフラグが整列します。フラグ名は、以下の注にリストされています。

データ[]

[in]テキストが表示されるバッファ。バッファは、グラフィカルリソースの作成に使用されます。

[in]ピクセル単位のバッファー幅。

高さ

[in]バッファーの高さ(ピクセル単位)。

[入力]テキストの色。

color_format

[in]カラー形式は、ENUM_COLOR_FORMAT列挙値によって設定されます。

戻り値

成功した場合はtrue、それ以外の場合はfalseを返します。

注意

anchor 指定されるアンカーポイントは、水平および垂直のテキスト配置の2つのフラグの組み合わせです。水平テキスト整列フラグ:

  • TA_LEFT —境界ボックスの左側のアンカーポイント
  • TA_CENTER —水平アンカーポイントは境界ボックスの中心にあります
  • TA_RIGHT —境界ボックスの右側のアンカーポイント

垂直テキスト整列フラグ:

  • TA_TOP —境界ボックスの上側のアンカーポイント
  • TA_VCENTER —垂直アンカーポイントは境界ボックスの中心にあります
  • TA_BOTTOM —境界ボックスの下側のアンカーポイント

 

フラグと指定されたアンカーポイントの可能な組み合わせが画像に示されています。
 

テキスト文字列をバインドする9つの可能な方法

例:

#property strict 
//— width and height of the canvas (used for drawing)
#define IMG_WIDTH  200
#define IMG_HEIGHT 200
//— display the parameter window before launching the script
#property script_show_inputs
//— enable to set color format
input ENUM_COLOR_FORMAT clr_format=COLOR_FORMAT_XRGB_NOALPHA;
//— drawing array (buffer) 
uint ExtImg[IMG_WIDTH*IMG_HEIGHT];
//+——————————————————————+
//| Script program start function                                    |
//+——————————————————————+
void OnStart()
  {
//— create OBJ_BITMAP_LABEL object for drawing    
   ObjectCreate(0,“CLOCK”,OBJ_BITMAP_LABEL,0,0,0);
//— specify the name of the graphical resource for writing in CLOCK object
   ObjectSetString(0,“CLOCK”,OBJPROP_BMPFILE,“::IMG”);
 
//— auxiliary variables
   double a;            // arrow corner
   uint   nm=2700;      // minute corner
   uint   nh=2700*12;   // hour counter
   uint   w,h;          // variables for receiving text string sizes 
   int    x,y;          // variables for calculation of the current coordinates of text string anchor points
 
//— rotate clock hands in an infinite loop, till the script is stopped
   while(!IsStopped())
     {
      //— clear the clock drawing buffer array
      ArrayFill(ExtImg,0,IMG_WIDTH*IMG_HEIGHT,0);
      //— set the font for drawing digits for the clock-face
      TextSetFont(“Arial”,-200,FW_EXTRABOLD,0);
      //— draw the clock-face
      for(int i=1;i<=12;i++)
        {
         //— receive the size of the current hour on the clock-face
         TextGetSize(string(i),w,h);
         //— calculate the coordinates of the current hour on the clock-face
         a=-((i*300)%3600*M_PI)/1800.0;
         x=IMG_WIDTH/2-int(sin(a)*80+0.5+w/2);
         y=IMG_HEIGHT/2-int(cos(a)*80+0.5+h/2);
         //— output the hour on the clock-face to ExtImg[] buffer
         TextOut(string(i),x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
        }
      //— now, specify the font for drawing the minute hand      
      TextSetFont(“Arial”,-200,FW_EXTRABOLD,-int(nm%3600));
      //— receive the size of the minute hand
      TextGetSize(“—–>”,w,h);
      //— calculate the coordinates of the minute hand on the clock-face
      a=-(nm%3600*M_PI)/1800.0;
      x=IMG_WIDTH/2-int(sin(a)*h/2+0.5);
      y=IMG_HEIGHT/2-int(cos(a)*h/2+0.5);
      //— output of the minute hand to the clock-face in ExtImg[]buffer
      TextOut(“—–>”,x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //— now, set the font for drawing the minute hand      
      TextSetFont(“Arial”,-200,FW_EXTRABOLD,-int(nh/12%3600));
      TextGetSize(“==>”,w,h);
      //— calculate the coordinates of the hour hand on the clock-face
      a=-(nh/12%3600*M_PI)/1800.0;
      x=IMG_WIDTH/2-int(sin(a)*h/2+0.5);
      y=IMG_HEIGHT/2-int(cos(a)*h/2+0.5);
      //— output of the hour hand on the clock-face to ExtImg[] buffer
      TextOut(“==>”,x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //— update the graphical resource
      ResourceCreate(“::IMG”,ExtImg,IMG_WIDTH,IMG_HEIGHT,0,0,IMG_WIDTH,clr_format);
      //— forced chart update
      ChartRedraw();
 
      //— increase hour and minute counters
      nm+=60;
      nh+=60;
      //— keeping a short pause between the frames
      Sleep(10);
     }
//— delete CLOCK object when completing the script’s operation
   ObjectDelete(0,“CLOCK”);
//—
  }

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">