ResourceCreate

Criar um recurso de imagem baseado em um conjunto de dados. Existe duas variantes da função:
Criando um recurso baseado em um arquivo

bool  ResourceCreate(
   const string      resource_name,       // Nome do recurso
   const string      path                 // Uma caminho relativo para o arquivo
   );

Criando um recurso baseado em um array de pixels

bool  ResourceCreate(
   const string      resource_name,       // Nome do recurso
   const uint&       data[],              // Conjunto de dados em um array
   uint              img_width,           // A largura do recurso de imagem
   uint              img_height,          // A altura do recurso de imagem
   uint              data_xoffset,        // O deslocamento horizontal para direita do canto superior esquerdo da imagem
   uint              data_yoffset,        // O deslocamento vertical para baixo do canto superior esquerdo da imagem
   uint              data_width,          // A largura total da imagem baseada no conjunto de dados
   ENUM_COLOR_FORMAT color_format         // Método de processamento de cor
   );

Parâmetros

resource_name

[in]  Nome do recurso.

data[][]

[in]  Um array de uma dimensão ou duas dimensões de cores para criar uma imagem completa.

img_width

[in]  A largura da área da imagem retangular em pixels para ser colocada no recurso na forma de uma imagem. Ela não pode ser maior que o valor data_width.

img_height

[in]  A altura da área da imagem retangular em pixels para ser colocada no recurso na forma de uma imagem.

data_xoffset

[in]  O deslocamento horizontal para direita da área retangular da imagem.

data_yoffset

[in]  O deslocamento vertical para baixa da área retangular da imagem.

data_width

[in]  Requerido somente para arrays de uma dimensão. Denota a largura total da imagem a partir do conjunto de dados. Se data_width=0, é assumido ser igual a img_width. Para arrays bidimensionais o parâmetro é ignorado e é assumido como sendo igual à segunda dimensão do array data[].

color_format

[in]  Método de processamento de cor, a partir de um valor da enumeração ENUM_COLOR_FORMAT.

Valor do Retorno

Retorna true se bem sucedido, caso contrário false. Para obter informações sobre o erro chame a função GetLastError(). Os seguintes erros podem ocorrer:

  • 4015 — ERR_RESOURCE_NAME_DUPLICATED (nomes idênticos do recurso dinâmico e estático)
  • 4016 — ERR_RESOURCE_NOT_FOUND (o recurso não foi encontrado)
  • 4017 — ERR_RESOURCE_UNSUPPORTED_TYPE (este tipo de recurso não é suportado)
  • 4018 — ERR_RESOURCE_NAME_IS_TOO_LONG (o nome do recurso é muito longo)

Observação

Se a segunda versão da função é chamada para criar o mesmo recurso com largura, altura e parâmetros de deslocamento diferentes, ela não cria um novo recurso, mas simplesmente atualiza o recurso existente.

A primeira versão da função é usada para carregar imagens e sons a partir de arquivos, e a segunda versão é usada somente para a criação dinâmica de imagens.

Imagens devem estar no formato BMP com um profundidade de cor de 24 ou 32 bits. Sons podem somente ser no formato WAV. O tamanho do recurso não deve exceder 16 Mb.
 

ENUM_COLOR_FORMAT

Identifier

Descrição

COLOR_FORMAT_XRGB_NOALPHA

O componente do canal alfa é ignorado

COLOR_FORMAT_ARGB_RAW

Componentes de cor não são tratados pelo terminal (devem ser corretamente definidos pelo usuário)

COLOR_FORMAT_ARGB_NORMALIZE

Componentes de cor são tratados pelo terminal

Exemplo:

//+------------------------------------------------------------------+
//| Atualiza os dados do recurso gráfico                             |
//+------------------------------------------------------------------+
void Update(const string res_name,const uint &pixel_data[],const uint width,const uint height,const bool redraw)
  {
//--- Se forem passados tamanhos nulos, saímos
   if(width==0 || height==0)
      return;
//--- Atualizamos os dados do recurso e redesenhamos o gráfico
   if(ResourceCreate(res_name,pixel_data,width,height,0,0,0,COLOR_FORMAT_ARGB_NORMALIZE) && redraw)
      ChartRedraw();
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- declaramos os parâmetros do recurso gráfico
   string rc_name="Resource";
   uint   rc_width=100;
   uint   rc_height=100;
   uint   rc_data[];
   uint   rc_size=rc_width*rc_height;
 
   ResetLastError();
//--- definimos o tamanho do array de pixels
   if(ArrayResize(rc_data,rc_size)!=rc_size)
     {
      Print("ArrayResize() failed. Error code: ",GetLastError());
      return;
     }
//--- preenchemos o array de pixels com cor transparente e com base nele criamos um recurso gráfico
   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());
 
//--- verificamos o recurso gráfico criado
//--- obtemos os dados de tempo e preço da barra atual
   MqlTick tick={};
   if(!SymbolInfoTick(Symbol(),tick))
     {
      Print("SymbolInfoTick() failed. Error code: ",GetLastError());
      return;
     }
//--- criamos um objeto "Desenho" nas coordenadas de preço e tempo do último tick
   string obj_name="Bitmap";
   if(!ObjectCreate(0,obj_name,OBJ_BITMAP,0,tick.time,tick.bid))
     {
      Print("ObjectCreate() failed. Error code: ",GetLastError());
      return;
     }
//--- definimos para o objeto-desenho a largura e a altura iguais às do recurso gráfico.
//--- definimos o ponto de ancoragem do objeto pelo seu centro.
   ObjectSetInteger(0,obj_name,OBJPROP_XSIZE,rc_width);
   ObjectSetInteger(0,obj_name,OBJPROP_YSIZE,rc_height);
   ObjectSetInteger(0,obj_name,OBJPROP_ANCHOR,ANCHOR_CENTER);
//--- especificamos para o objeto-desenho o arquivo de imagem do recurso gráfico criado anteriormente
//--- Neste caso, para indicar o nome do recurso gráfico usado, deve-se escrever "::" antes de seu nome
   ObjectSetString(0,obj_name,OBJPROP_BMPFILE,"::"+rc_name);
   
//--- definimos a cor DodgerBlue com transparência de 200
   uint clr=ColorToARGB(clrDodgerBlue,200);
//--- preenchemos com a cor definida todo o array de pixels do recurso gráfico
   ArrayInitialize(rc_data,clr);
//--- atualizamos os dados do recurso gráfico
   Update(rc_name,rc_data,rc_width,rc_height,true);
  }

Também Veja

Recursos, ObjectCreate(), ObjectSetString(), OBJPROP_BMPFILE