OBJ_BITMAP_LABEL

Objeto "Etiqueta gráfica".

ObjBitmapLabel

Nota

Desde la enumeración ENUM_ANCHOR_POINT se puede elegir la posición del punto de anclaje respecto a la etiqueta. Las coordenadas del punto de anclaje se establecen en píxeles.

Además, desde la enumeración ENUM_BASE_CORNER se puede elegir la esquina de enlace de la etiqueta gráfica.

Para el objeto "Etiqueta gráfica" se puede elegir la zona de visibilidad de la imagen.

Ejemplo

El siguiente script crea varias imágenes en el gráfico. Para la creación y modificación de las propiedades del objeto gráfico han sido escritas unas funciones especiales que Usted puede utilizar "como son" en sus propias aplicaciones.

//--- descripción
#property description "El script crea el objeto \"Etiqueta gráfica\"."
//--- mostramos la ventana de los parámetros de entrada durante el arranque del script
#property script_show_inputs
//--- los parámetros de entrada del script
input string            InpName="BmpLabel";               // Nombre de la etiqueta
input string            InpFileOn="\\Images\\dollar.bmp"// Nombre del archivo para el modo On
input string            InpFileOff="\\Images\\euro.bmp";  // Nombre del archivo para el modo Off
input bool              InpState=false;                   // Etiqueta pulsada/no pulsada
input ENUM_BASE_CORNER  InpCorner=CORNER_LEFT_UPPER;      // Esquina del gráfico para el enlace
input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_CENTER;          // Modo del enlace
input color             InpColor=clrRed;                  // Color del borde durante la selección
input ENUM_LINE_STYLE   InpStyle=STYLE_SOLID;             // Estilo de la línea durante la selección
input int               InpPointWidth=1;                  // Tamaño del punto para los movimientos
input bool              InpBack=false;                    // Objeto al fondo
input bool              InpSelection=false;               // Seleccionar para mover
input bool              InpHidden=true;                   // Ocultar en la lista de objetos
input long              InpZOrder=0;                      // Prioridad para el clic del ratón
//+------------------------------------------------------------------+
//| Crea el objeto "Etiqueta gráfica"                               |
//+------------------------------------------------------------------+
bool BitmapLabelCreate(const long              chart_ID=0,               // ID del gráfico
                       const string            name="BmpLabel",          // nombre de la etiqueta
                       const int               sub_window=0,             // número de subventana
                       const int               x=0,                      // coordenada por el eje X
                       const int               y=0,                      // coordenada por el eje Y
                       const string            file_on="",               // imagen en el modo On
                       const string            file_off="",              // imagen en el modo Off
                       const int               width=0,                  // coordenada X de la zona de visibilidad
                       const int               height=0,                 // coordenada Y de la zona de visibilidad
                       const int               x_offset=10,              // desplazamiento de la zona de visibilidad por X
                       const int               y_offset=10,              // desplazamiento de la zona de visibilidad por Y
                       const bool              state=false,              // pulsada/no pulsada
                       const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// esquina del gráfico para el enlace
                       const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER// modo de enlace 
                       const color             clr=clrRed,               // color del borde durante la selección
                       const ENUM_LINE_STYLE   style=STYLE_SOLID,        // estilo de la línea durante la selección
                       const int               point_width=1,            // tamaño del punto de desplazamiento
                       const bool              back=false,               // al fondo
                       const bool              selection=false,          // seleccionar para mover
                       const bool              hidden=true,              // ocultar en la lista de objetos
                       const long              z_order=0)                //prioridad para el clic del ratón
  {
//--- anulamos el valor del error
   ResetLastError();
//--- creamos la etiqueta gráfica
   if(!ObjectCreate(chart_ID,name,OBJ_BITMAP_LABEL,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al crear el objeto \"Etiqueta gráfica\"! Código del error = ",GetLastError());
      return(false);
     }
//--- ponemos las imágenes para los modos On y Off
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,0,file_on))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al cargar la imagen para el modo On! Código del error = ",GetLastError());
      return(false);
     }
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,1,file_off))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al cargar la imagen para el modo Off! Código del error = ",GetLastError());
      return(false);
     }
//--- establecemos las coordenadas de la etiqueta
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- establecemos la zona de visibilidad de la imagen; si los valores del ancho o del alto
//--- superan los valores del ancho o del alto (respectivamente) de la imagen original,
//--- no se dibuja; si los valores del ancho o del alto son inferiores a las dimensiones de la imagen,
//--- se dibuja la parte que corresponde a estas dimensiones
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- establecemos la parte de la imagen que debe mostrarse en la zona de visibilidad
//--- por defecto se trata de la zona superior izquierda de la imagen; los valores permiten
//--- hacer el desplazamiento de esta esquina y mostrar otra parte de la imagen
   ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset);
   ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset);
//--- definimos en qué estado se encuentra la etiqueta (pulsada o no pulsada)
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- establecemos la esquina del gráfico respecto a la cual van a determinarse las coordenadas del punto
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- establecemos el modo de anclaje
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- establecemos el color del contorno durante el modo de selección del objeto activado
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- establecemos el estilo del contorno durante el modo de selección del objeto activado
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- establecemos el tamaño del punto de enlace con el que se puede mover el objeto
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- mostramos en el primer plano (false) o al fondo (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- activar (true) o desactivar (false) el modo de desplazamiento de la etiqueta con ratón
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- ocultamos (true) o mostramos (false) el nombre del objeto gráfico en la lista de objetos
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- establecemos la prioridad para obtener el evento de cliquear sobre el gráfico
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- ejecución con éxito
   return(true);
  }
//+------------------------------------------------------------------+
//| Pone nueva imagen para el objeto "Etiqueta gráfica"                         |
//+------------------------------------------------------------------+
bool BitmapLabelSetImage(const long   chart_ID=0,      // ID del gráfico
                         const string name="BmpLabel"// nombre de la etiqueta
                         const int    on_off=0,        // modificador (On u Off)
                         const string file="")         // ruta hacia el archivo
  {
//--- anulamos el valor del error
   ResetLastError();
//--- establecemos la ruta hacia el archivo con la imagen
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,on_off,file))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al cargar la imagen! Código del error = ",GetLastError());
      return(false);
     }
//--- ejecución con éxito
   return(true);
  }
//+------------------------------------------------------------------+
//| Mueve el objeto "Etiqueta gráfica"                               |
//+------------------------------------------------------------------+
bool BitmapLabelMove(const long   chart_ID=0,      // ID del gráfico
                     const string name="BmpLabel"// nombre de la etiqueta
                     const int    x=0,             // coordenada por el eje X
                     const int    y=0)             // coordenada por el eje Y
  {
//--- anulamos el valor del error
   ResetLastError();
//--- movemos el objeto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al mover la coordenada X del objeto! Código del error = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al mover la coordenada X del objeto! Código del error = ",GetLastError());
      return(false);
     }
//--- ejecución con éxito
   return(true);
  }
//+------------------------------------------------------------------+
//| Cambia el tamaño de la zona de visibilidad (tamaño del objeto)               |
//+------------------------------------------------------------------+
bool BitmapLabelChangeSize(const long   chart_ID=0,      // ID del gráfico
                           const string name="BmpLabel"// nombre de la etiqueta
                           const int    width=0,         // ancho de la etiqueta
                           const int    height=0)        // alto de la etiqueta
  {
//--- anulamos el valor del error
   ResetLastError();
//--- cambiamos las dimensiones del objeto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al cambiar el ancho del objeto! Código del error = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al cambiar el alto del objeto! Código del error = ",GetLastError());
      return(false);
     }
//--- ejecución con éxito
   return(true);
  }
//+------------------------------------------------------------------+
//| Cambia la coordenada de la esquina superior izquierda de la zona de visibilidad       |
//+------------------------------------------------------------------+
bool BitmapLabelMoveVisibleArea(const long   chart_ID=0,      // ID del gráfico
                                const string name="BmpLabel"// nombre de la etiqueta
                                const int    x_offset=0,      // coordenada X de la zona de visibilidad
                                const int    y_offset=0)      // coordenada Y de la zona de visibilidad
  {
//--- anulamos el valor del error
   ResetLastError();
//--- cambiamos las coordenadas de la zona de visibilidad del objeto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al cambiar la coordenada X de la zona de visibilidad! Código del error = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al cambiar la coordenada Y de la zona de visibilidad! Código del error = ",GetLastError());
      return(false);
     }
//--- ejecución con éxito
   return(true);
  }
//+------------------------------------------------------------------+
//| Elimina el objeto "Etiqueta gráfica"                               |
//+------------------------------------------------------------------+
bool BitmapLabelDelete(const long   chart_ID=0,      // ID del gráfico
                       const string name="BmpLabel"// nombre de la etiqueta
  {
//--- anulamos el valor del error
   ResetLastError();
//--- eliminamos la etiqueta
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": ¡Fallo al eliminar el objeto \"Etiqueta gráfica\"! Código del error = ",GetLastError());
      return(false);
     }
//--- ejecución con éxito
   return(true);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- tamaño de la ventana del gráfico
   long x_distance;
   long y_distance;
//--- definimos las dimensiones de la ventana
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("¡Fallo al obtener el ancho del gráfico! Código del error = ",GetLastError());
      return;
     }
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("¡Fallo al obtener el alto del gráfico! Código del error = ",GetLastError());
      return;
     }
//--- definimos las coordenadas de la etiqueta gráfica
   int x=(int)x_distance/2;
   int y=(int)y_distance/2;
//--- establecemos las dimensiones de la etiqueta y las coordenadas de la zona de visibilidad
   int width=32;
   int height=32;
   int x_offset=0;
   int y_offset=0;
//--- colocamos la etiqueta gráfica en el centro de la ventana
   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;
     }
//--- redibujamos el gráfico y esperamos 1 segundo
   ChartRedraw();
   Sleep(1000);
//--- cambiamos el tamaño de la zona de visibilidad de la etiqueta en el ciclo
   for(int i=0;i<6;i++)
     {
      //--- cambiamos el tamaño de la zona de visibilidad
      width--;
      height--;
      if(!BitmapLabelChangeSize(0,InpName,width,height))
         return;
      //--- comprobamos si el trabajo del script ha sido finalizado forzosamente
      if(IsStopped())
         return;
      //--- redibujamos el gráfico
      ChartRedraw();
      // retardo de 0,3 segundo
      Sleep(300);
     }
//--- retardo de 1 segundo
   Sleep(1000);
//--- cambiamos las coordenadas de la zona de visibilidad de la etiqueta en el ciclo
   for(int i=0;i<2;i++)
     {
      //--- cambiamos las coordenadas de la zona de visibilidad
      x_offset++;
      y_offset++;
      if(!BitmapLabelMoveVisibleArea(0,InpName,x_offset,y_offset))
         return;
      //--- comprobamos si el trabajo del script ha sido finalizado forzosamente
      if(IsStopped())
         return;
      //--- redibujamos el gráfico
      ChartRedraw();
      // retardo de 0,3 segundo
      Sleep(300);
     }
//--- retardo de 1 segundo
   Sleep(1000);
//--- eliminamos la etiqueta
   BitmapLabelDelete(0,InpName);
   ChartRedraw();
//--- retardo de 1 segundo
   Sleep(1000);
//---
  }