ResourceCreate

데이터 세트를 기반으로 이미지 리소스를 생성. 이 기능에는 두 가지 변수가 있습니다:
파일을 기반으로 리소스 생성

bool  ResourceCreate(
   const string      resource_name,       // 리소스 이름
   const string      path                 // 파일의 상대 경로
   );

픽셀 배열을 기반으로 리소스 생성

bool  ResourceCreate(
   const string      resource_name,       // 리소스 이름
   const uint&       data[],              // 데이터 집합 배열
   uint              img_width,           // 이미지 리소스의 폭
   uint              img_height,          // 이미지 리소스 높이
   uint              data_xoffset,        // 이미지의 왼쪽 상단 모서리의 수평 오른쪽 오프셋
   uint              data_yoffset,        // 이미지 왼쪽 상단 모서리의 수직 하향 오프셋
   uint              data_width,          // 데이터 세트를 기준으로 한 이미지 총 너비
   ENUM_COLOR_FORMAT color_format         // 색 처리 방법
   );

매개변수

resource_name

[in]  리소스 이름.

data[][]

[in]  전체 이미지를 만들기 위한 1차원 또는 2차원 배열..

img_width

[in]  이미지 형식으로 리소스에 배치될 직사각형 이미지 영역의 너비(픽셀). data_width 보다 클 수 없습니다.

img_height

[in]  이미지 형식으로 리소스에 배치할 직사각형 이미지 영역의 높이(픽셀).

data_xoffset

[in]  이미지의 직사각형 영역의 오른쪽 수평 간격 띄우기.

data_yoffset

[in]  이미지의 직사각형 영역의 수직 아랫쪽 간격 띄우기.

data_width

[in]  1차원 배열에만 필요. 데이터 세트에서 이미지 전체 너비를 나타냅니다. data_width=0 이면, img_width와 같은 것으로 간주됩니다. 2차원 배열의 경우 매개변수는 무시되며 data[] 배열의 두 번째 차원과 동일하다고 가정합니다.

color_format

[in] ENUM_COLOR_FORMAT 열거의 값에서의 색 처리 방법.

값 반환

성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 오류에 대한 정보를 얻으려면 GetLastError() 함수를 호출. 다음과 같은 오류가 발생할 수 있습니다:

  • 4015 – ERR_RESOURCE_NAME_DUPLICATED (동적 및 정적 리소스의 동일한 이름)
  • 4016 – ERR_RESOURCE_NOT_FOUND (리소스를 찾을 수 없음)
  • 4017 – ERR_RESOURCE_UNSUPPORTED_TYPE (이 리소스 유형이 지원되지 않음)
  • 4018 – ERR_RESOURCE_NAME_IS_TOO_LONG (리소스 이름이 너무 긺)

주의

두 번째 버전의 함수가 서로 다른 너비, 높이 및 이동 매개변수를 사용하여 동일한 리소스를 생성하도록 요청하면 새 리소스가 생성되지 않고 기존 리소스를 업데이트하기만 하면 됩니다.

기능의 첫 번째 버전은 파일로부터 이미지와 소리를 업로드하는 데 사용되며, 두 번째 버전은 이미지 동적 생성에만 사용됩니다.

이미지는 24비트 또는 32비트의 색 심도를 가진 BMP 형식이어야 합니다. 사운드는 WAV 형식에서만 사용할 수 있습니다. 리소스의 크기는 16 Mb를 초과할 수 없습니다.
 

ENUM_COLOR_FORMAT

식별자

설명

COLOR_FORMAT_XRGB_NOALPHA

알파 채널의 구성 요소는 무시됩니다.

COLOR_FORMAT_ARGB_RAW

색상 구성 요소가 단자에서 처리되지 않습니다(사용자가 올바르게 설정해야함)

COLOR_FORMAT_ARGB_NORMALIZE

색상 구성요소는 단말기에서 처리됩니다

예:

//+------------------------------------------------------------------+
//| 그래픽 리소스 데이터 업데이트                                        |
//+------------------------------------------------------------------+
void Update(const string res_name,const uint &pixel_data[],const uint width,const uint height,const bool redraw)
  {
//--- 0차원이 전달되면 종료
   if(width==0 || height==0)
      return;
//--- 리소스 데이터를 업데이트하고 차트를 다시 그립니다.
   if(ResourceCreate(res_name,pixel_data,width,height,0,0,0,COLOR_FORMAT_ARGB_NORMALIZE) && redraw)
      ChartRedraw();
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 그래픽 리소스의 매개변수 선언
   string rc_name="Resource";
   uint   rc_width=100;
   uint   rc_height=100;
   uint   rc_data[];
   uint   rc_size=rc_width*rc_height;
 
   ResetLastError();
//--- 픽셀 배열의 크기를 설정합니다.
   if(ArrayResize(rc_data,rc_size)!=rc_size)
     {
      Print("ArrayResize() failed. Error code: ",GetLastError());
      return;
     }
//--- 픽셀 배열을 투명한 색상으로 채우고 이를 기반으로 그래픽 리소스를 만듭니다.
   ArrayInitialize(rc_data,0x00FFFFFF);
   if(!ResourceCreate(rc_name,rc_data,rc_width,rc_height,0,0,0,COLOR_FORMAT_ARGB_NORMALIZE))
     {
      Print("ResourceCreate() failed. Error code: ",GetLastError());
      return;
     }
   Print("Size of created recource array: ",rc_data.Size());
 
//--- 생성된 그래픽 리소스를 확인합니다.
//--- 현재 바의 시간과 가격 데이터를 가져옵니다.
   MqlTick tick={};
   if(!SymbolInfoTick(Symbol(),tick))
     {
      Print("SymbolInfoTick() failed. Error code: ",GetLastError());
      return;
     }
//--- 마지막 틱 가격과 시간의 좌표를 사용하여 Bitmap 객체를 생성합니다.
   string obj_name="Bitmap";
   if(!ObjectCreate(0,obj_name,OBJ_BITMAP,0,tick.time,tick.bid))
     {
      Print("ObjectCreate() failed. Error code: ",GetLastError());
      return;
     }
//--- 생성된 비트맵 객체의 너비와 높이를 그래픽 리소스의 너비와 높이와 동일하게 설정합니다.
//--- 객체 앵커 포인트를 중심으로 설정합니다.
   ObjectSetInteger(0,obj_name,OBJPROP_XSIZE,rc_width);
   ObjectSetInteger(0,obj_name,OBJPROP_YSIZE,rc_height);
   ObjectSetInteger(0,obj_name,OBJPROP_ANCHOR,ANCHOR_CENTER);
//--- 비트맵 객체에 대해 이전에 생성된 그래픽 리소스를 이미지 파일로 지정합니다.
//--- 이 경우 사용된 그래픽 리소스의 이름을 나타내기 위해 이름 앞에 "::"를 추가해야 합니다.
   ObjectSetString(0,obj_name,OBJPROP_BMPFILE,"::"+rc_name);
   
//--- 투명도 200으로 DodgerBlue 색상을 설정합니다.
   uint clr=ColorToARGB(clrDodgerBlue,200);
//--- 그래픽 리소스의 전체 픽셀 배열을 설정된 색상으로 채웁니다.
   ArrayInitialize(rc_data,clr);
//--- 그래픽 리소스 데이터 업데이트
   Update(rc_name,rc_data,rc_width,rc_height,true);
  }

추가 참조

Resources, ObjectCreate(), ObjectSetString(), OBJPROP_BMPFILE