TextOut

이 함수는 사용자 지정 배열(버퍼)에 텍스트를 표시하고 해당 작업의 결과를 반환합니다. 이 배열은 그래픽 리소스를 생성하도록 설계되었습니다.

bool  TextOut(
   const string       text,          // 표시된 텍스트
   int                x,             // X 좌표 
   int                y,             // Y 좌표 
   uint               anchor,        // 앵커 유형
   uint               &data[],       // 출력 버퍼
   uint               width,         // 버퍼 너비(픽셀)
   uint               height,        // 버퍼 높이(픽셀)
   uint               color,         // 텍스트 색상
   ENUM_COLOR_FORMAT  color_format   // 출력용 색상 형식
   );

Parameter

텍스트

[in]  버퍼에 기록될 텍스트를 표시합니다. 한 줄짜리 텍스트만 표시됩니다.

x

[in]  표시된 텍스트의 앵커 포인트의 X 좌표입니다.

y

[in]  표시된 텍스트의 앵커 포인트의 Y 좌표입니다.

anchor

[in]  표시된 텍스트의 앵커 포인트 위치의 9가지 사전 정의된 메소드 중 값입니다. 이 값은 수평 및 수직 텍스트 정렬 플래그의 두 개의 플래그 조합으로 설정됩니다. 플래그 이름은 아래 참고에 나와 있습니다.

data[]

[in]  텍스트가 표시되는 버퍼. 버퍼는 그래픽 리소스를 만드는 데 사용됩니다.

width

[in]  버퍼 너비(픽셀)

height

[in]  버퍼 높이(픽셀)

color

[in]  텍스트 색상.

color_format

[in]  색상 형식은 ENUM_COLOR_FORMAT 열거값으로 설정됩니다.

반환값

성공하면 true를 반환하고 그렇지 않으면 false를 반환합니다.

참고

앵커에 의해 지정된 앵커 포인트는 수평 및 수직 텍스트 정렬의 두 플래그의 조합입니다. 수평 텍스트 정렬 플래그:

  • TA_LEFT – 경계 상자의 왼쪽에 있는 고정점
  • TA_CENTER – 수평 앵커 포인트는 경계 상자의 중앙에 위치합니다
  • TA_RIGHT – 경계 상자의 오른쪽에 있는 고정점

수직 텍스트 정렬 플래그:

  • TA_TOP – 경계 상자의 윗면에 있는 앵커 포인트
  • TA_VCENTER – 수직 앵커 포인트는 경계 상자의 중앙에 위치합니다.
  • TA_BOTTOM – 경계 상자 아래쪽의 앵커 포인트

 

플래그와 지정된 앵커 포인트의 가능한 조합이 영상에 표시됩니다.
 

텍스트 문자열을 바인딩할 수 있는 9가지 방법

예:

//--- 너비와 캔버스(그리기에 사용되는)의 높이.
#define IMG_WIDTH  200
#define IMG_HEIGHT 200
//--- 스크립트를 시작하기 전에 매개 변수 창을 표시합니다
#property script_show_inputs
//--- 색상 형식을 설정합니다
input ENUM_COLOR_FORMAT clr_format=COLOR_FORMAT_XRGB_NOALPHA;
//--- 그리기 배열(버퍼)
uint ExtImg[IMG_WIDTH*IMG_HEIGHT];
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 그리기를 위해 OBJ_BITMAP_LABEL 개체 생성    
   ObjectCreate(0,"CLOCK",OBJ_BITMAP_LABEL,0,0,0);
//--- CLOCK 객체에 쓸 그래픽 리소스의 이름을 명시합니다
   ObjectSetString(0,"CLOCK",OBJPROP_BMPFILE,"::IMG");
 
//--- auxiliary variables
   double a;            // 애로우 코너
   uint   nm=2700;      // 분(minute) 코너
   uint   nh=2700*12;   // 시간(hour) 카운터
   uint   w,h;          // 텍스트 문자열 크기를 수신하기 위한 변수 
   int    x,y;          // 텍스트 문자열 앵커 지점의 현재 좌표를 계산하기 위한 변수
 
//--- 스크립트가 중지될 때까지 시계 바늘을 무한 루프에서 회전합니다
   while(!IsStopped())
     {
      //--- 시계 그리기 버퍼 배열을 지웁니다
      ArrayFill(ExtImg,0,IMG_WIDTH*IMG_HEIGHT,0);
      //--- 시계 페이스 숫자 그리기 글꼴 설정
      TextSetFont("Arial",-200,FW_EXTRABOLD,0);
      //--- 시계 페이스 그리기
      for(int i=1;i<=12;i++)
        {
         //--- 시계 페이스의 현재 시간에 대한 크기를 받음
         TextGetSize(string(i),w,h);
         //--- 시계 페이스의 현재 시간 좌표를 계산
         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);
         //--- 시계 페이스의 시간을 ExtImg[] 버퍼로 출력
         TextOut(string(i),x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
        }
      //--- 이제, 분침을 그릴 글꼴을 지정합니다      
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nm%3600));
      //--- 분침의 크기를 받습니다
      TextGetSize("----->",w,h);
      //--- 시계 페이스의 분침의 좌표를 계산
      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);
      //--- ExtImg[] 버퍼의 시계 페이스 분침 출력
      TextOut("----->",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //--- 자, 분침을 그릴 폰트를 설정하세요      
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nh/12%3600));
      TextGetSize("==>",w,h);
      //--- 시계 페이스의 시침의 좌표를 계산
      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);
      //--- ExtImg[] 버퍼에 대한 시계 페이스의 시침 출력
      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);
      //--- 포스 차트 업데이트
      ChartRedraw();
 
      //--- 시간 및 분 카운터 증가
      nm+=60;
      nh+=60;
      //--- 프레임 사이에 잠시 멈춤
      Sleep(10);
     }
//--- 스크립트 작업을 완료할 때 CLOCK 개체 삭제
   ObjectDelete(0,"CLOCK");
//---
  }

참고 항목

Resources, ResourceCreate(), ResourceSave(), TextGetSize(), TextSetFont()