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];
/+------------------------------------------------------------------+
//| Script program start function                                   |
/+------------------------------------------------------------------+
void OnStart()
  {
//--- 그리기를 위한 OBJ_BITMAP_LABEL 객체를 생성합니다    
   ObjectCreate(0,"CLOCK",OBJ_BITMAP_LABEL,0,0,0);
//--- CLOCK 객체에서 렌더링할 그래픽 리소스의 이름을 설정합니다 
   ObjectSetString(0,"CLOCK",OBJPROP_BMPFILE,"::IMG");
 
//--- 보조 변수
   double a;            // 화살표 앵글
   uint   nm=2700;      // 분 카운터
   uint   nh=2700*12;   // 시 카운터 
   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);
 
//--- 그래픽 리소스를 업데이트 합니다
      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()