OBJ_BITMAP_LABEL

Objeto Etiqueta Bitmap.

ObjBitmapLabel

Observação

Posição do ponto de ancoragem relativa a etiqueta pode ser selecionada do enumerador ENUM_ANCHOR_POINT. Coordenadas do ponto de ancoragem são em pixels.

Você também pode selecionar uma ancoragem do bitmap no canto a partir da enumeração ENUM_BASE_CORNER.

Para etiqueta bitmap, você pode selecionar no escopo de visibilidade de uma imagem.

Exemplo

O seguinte script cria vários bitmaps no gráfico. Funções especiais têm sido desenvolvidas para criar e alterar as propriedades do objeto gráfico. Você pode utilizar estas funções "as is" em seus próprios aplicativos.

//--- descrição
#property description "Script criando objeto \"Bitmap Label\"."
//--- janela de exibição dos parâmetros de entrada durante inicialização do script
#property script_show_inputs
//--- entrada de parâmetros do script
input string            InpName="BmpLabel";               // Nome etiqueta
input string            InpFileOn="\\Images\\dollar.bmp"// O nome do arquivo para o modo On
input string            InpFileOff="\\Images\\euro.bmp";  // O nome do arquivo para o modo Off
input bool              InpState=false;                   // Etiqueta pressionada/liberada
input ENUM_BASE_CORNER  InpCorner=CORNER_LEFT_UPPER;      // Canto do gráfico para ancoragem
input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_CENTER;          // Tipo de ancoragem
input color             InpColor=clrRed;                  // A cor da borda quando destacada
input ENUM_LINE_STYLE   InpStyle=STYLE_SOLID;             // Estilo da linha quando destacada
input int               InpPointWidth=1;                  // Tamanho do ponto para mover
input bool              InpBack=false;                    // Objeto de fundo
input bool              InpSelection=false;               // Destaque para mover
input bool              InpHidden=true;                   // Ocultar na lista de objeto
input long              InpZOrder=0;                      // Prioridade para clicar no mouse
//+------------------------------------------------------------------+
//| Criar objeto Etiqueta Bitmap                                     |
//+------------------------------------------------------------------+
bool BitmapLabelCreate(const long              chart_ID=0,               // ID do gráfico
                       const string            name="BmpLabel",          // nome da etiqueta
                       const int               sub_window=0,             // índice da sub-janela
                       const int               x=0,                      // coordenada X
                       const int               y=0,                      // coordenada Y
                       const string            file_on="",               // imagem em modo On
                       const string            file_off="",              // imagem em modo Off
                       const int               width=0,                  // coordenada X do escopo de visibilidade
                       const int               height=0,                 // coordenada Y do escopo de visibilidade
                       const int               x_offset=10,              // escopo de visibilidade deslocado pelo eixo X
                       const int               y_offset=10,              // escopo de visibilidade deslocado pelo eixo Y
                       const bool              state=false,              // pressionada/liberada
                       const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// canto do gráfico para ancoragem
                       const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER// tipo de ancoragem
                       const color             clr=clrRed,               // a cor da borda quando destacada
                       const ENUM_LINE_STYLE   style=STYLE_SOLID,        // estilo da linha quando destacada
                       const int               point_width=1,            // mover tamanho do ponto
                       const bool              back=false,               // no fundo
                       const bool              selection=false,          // destaque para mover
                       const bool              hidden=true,              // ocultar na lista de objetos
                       const long              z_order=0)                // prioridade para clicar no mouse
  {
//--- redefine o valor de erro
   ResetLastError();
//--- criar uma etiqueta bitmap
   if(!ObjectCreate(chart_ID,name,OBJ_BITMAP_LABEL,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": falha ao criar objeto \"Etiqueta Bitmap\"! Código de erro = ",GetLastError());
      return(false);
     }
//--- definir as imagens para os modos ligar (On) e desligar (Off)
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,0,file_on))
     {
      Print(__FUNCTION__,
            ": falha para carregar a imagem para o modo On! Código de erro = ",GetLastError());
      return(false);
     }
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,1,file_off))
     {
      Print(__FUNCTION__,
            ": falha para carregar a imagem para o modo Off! Código de erro = ",GetLastError());
      return(false);
     }
//--- definir coordenadas da etiqueta
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- definir escopo de visibilidade para a imagem, se os valores da largura ou altura
//--- excederem a largura e a altura (respectivamente) de uma imagem de origem,
//--- não será desenhada, no caso oposto
//--- apenas a parte correspondente a esses valores será desenhada
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- definir a parte de uma imagem que está sendo exibida no escopo de visibilidade,
//--- a parte padrão é a área superior esquerda de uma imagem, os valores permitem
//--- realizar uma mudança a partir desta área de exibição de uma outra parte da imagem
   ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset);
   ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset);
//--- definir os status da etiqueta(pressionada ou liberada)
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- determinar o canto do gráfico onde as coordenadas do ponto são definidas
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- tipo de definição de ancoragem
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- definir a cor da borda quando o modo de destaque do objeto é habilitado
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- definir o estilo de linha quando o modo de destaque do objeto é habilitado
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- definir o tamanho do ponto de ancoragem para movimentar o objeto
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- exibir em primeiro plano (false) ou fundo (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- Habilitar (true) ou desabilitar (false) o modo de movimento da etiqueta pelo mouse
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultar (true) ou exibir (false) o nome do objeto gráfico na lista de objeto 
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- definir a prioridade para receber o evento com um clique do mouse no gráfico
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Definir uma nova imagem para objeto etiqueta Bitmap              |
//+------------------------------------------------------------------+
bool BitmapLabelSetImage(const long   chart_ID=0,      // ID do gráfico
                         const string name="BmpLabel"// nome da etiqueta
                         const int    on_off=0,        // modificador (On ou Off)
                         const string file="")         // caminho para o arquivo
  {
//--- redefine o valor de erro
   ResetLastError();
//--- definir o caminho para o arquivo da imagem
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,on_off,file))
     {
      Print(__FUNCTION__,
            ": falha para carregar a imagem! Código de erro = ",GetLastError());
      return(false);
     }
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Mover objeto Etiqueta Bitmap                                     |
//+------------------------------------------------------------------+
bool BitmapLabelMove(const long   chart_ID=0,      // ID do gráfico
                     const string name="BmpLabel"// nome da etiqueta
                     const int    x=0,             // coordenada X
                     const int    y=0)             // coordenada Y
  {
//--- redefine o valor de erro
   ResetLastError();
//--- mover o objeto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": falha para mover coordenada X do objeto! Código de erro = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": falha para mover coordenada Y do objeto! Código de erro = ",GetLastError());
      return(false);
     }
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Alterar tamanho do escopo de visibilidade (objeto)               |
//+------------------------------------------------------------------+
bool BitmapLabelChangeSize(const long   chart_ID=0,      // ID do gráfico
                           const string name="BmpLabel"// nome da etiqueta
                           const int    width=0,         // largura da etiqueta
                           const int    height=0)        // altura da etiqueta
  {
//--- redefine o valor de erro
   ResetLastError();
//--- alterar o tamanho do objeto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": falha ao alterar a largura do objeto! Código de erro = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": falha ao alterar a altura do objeto! Código de erro = ",GetLastError());
      return(false);
     }
//--- sucesso na execução
   return(true);
  }
//+--------------------------------------------------------------------+
//| Mudar coordenada canto superior esquerdo do escopo de visibilidade |
//+--------------------------------------------------------------------+
bool BitmapLabelMoveVisibleArea(const long   chart_ID=0,      // ID do grafico
                                const string name="BmpLabel"// nome da etiqueta
                                const int    x_offset=0,      // coordenada X do escopo de visibilidade
                                const int    y_offset=0)      // coordenada Y do escopo de visibilidade
  {
//--- redefine o valor de erro
   ResetLastError();
//--- alterar as coordenadas do escopo de visibilidade do objeto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset))
     {
      Print(__FUNCTION__,
            ": falha para alterar coordenada X do escopo de visibilidade! Código de erro = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset))
     {
      Print(__FUNCTION__,
            ": falha para alterar coordenada Y do escopo de visibilidade! Código de erro = ",GetLastError());
      return(false);
     }
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Excluir o Objeto "Bitmap label"                                  |
//+------------------------------------------------------------------+
bool BitmapLabelDelete(const long   chart_ID=0,      // ID do gráfico
                       const string name="BmpLabel"// nome da etiqueta
  {
//--- redefine o valor de erro
   ResetLastError();
//--- excluir a etiqueta
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": falha ao excluir objeto \"Bitmap label\"! Código de erro = ",GetLastError());
      return(false);
     }
//--- sucesso na execução
   return(true);
  }
//+------------------------------------------------------------------+
//| Programa Script da função start (iniciar)                        |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- tamanho da janela do gráfico
   long x_distance;
   long y_distance;
//--- definir tamanho da janela
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("Falha ao obter a largura do gráfico! Código de erro = ",GetLastError());
      return;
     }
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("Falha ao obter a altura do gráfico! Código de erro = ",GetLastError());
      return;
     }
//--- definir coordenadas da etiqueta bitmap
   int x=(int)x_distance/2;
   int y=(int)y_distance/2;
//--- definir o tamanho da etiqueta e a coordenada do escopo de visibilidade
   int width=32;
   int height=32;
   int x_offset=0;
   int y_offset=0;
//--- local da etiqueta bitmap no centro da janela
   if(!BitmapLabelCreate(0,InpName,0,x,y,InpFileOn,InpFileOff,width,height,x_offset,y_offset,InpState,
      InpCorner,InpAnchor,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- redesenhar o gráfico e esperar um segundo
   ChartRedraw();
   Sleep(1000);
//--- alterar tamanho do escopo de visibilidade da etiqueta em loop
   for(int i=0;i<6;i++)
     {
      //--- alterar o tamanho do escopo
      width--;
      height--;
      if(!BitmapLabelChangeSize(0,InpName,width,height))
         return;
      //--- verificar se o funcionamento do script foi desativado a força
      if(IsStopped())
         return;
      //--- redesenhar o gráfico
      ChartRedraw();
      // 0.3 segundos de atraso
      Sleep(300);
     }
//--- 1 segundo de atraso
   Sleep(1000);
//--- alterar as coordenadas do escopo de visibilidade da etiqueta em loop
   for(int i=0;i<2;i++)
     {
      //--- alterar coordenadas do escopo de visibilidade
      x_offset++;
      y_offset++;
      if(!BitmapLabelMoveVisibleArea(0,InpName,x_offset,y_offset))
         return;
      //--- verificar se o funcionamento do script foi desativado a força
      if(IsStopped())
         return;
      //--- redesenhar o gráfico
      ChartRedraw();
      // 0.3 segundos de atraso
      Sleep(300);
     }
//--- 1 segundo de atraso
   Sleep(1000);
//--- excluir a etiqueta
   BitmapLabelDelete(0,InpName);
   ChartRedraw();
//--- 1 segundo de atraso
   Sleep(1000);
//---
  }