OBJ_BITMAP_LABEL

Oggetto Etichetta Bitmap.

ObjBitmapLabel

Nota

La posizione del punto di ancoraggio relativa all'etichetta può essere scelta dall'enumerazione ENUM_ANCHOR_POINT. Le coordinate del punto di ancoraggio sono fissate in pixel.

Puoi anche selezionare l'angolo di ancoraggio bitmap dall'enumerazione ENUM_BASE_CORNER.

Per l'etichetta bitmap, puoi selezionare l'ambito di visibilità di un immagine.

Esempio

Lo script che segue crea diversi bitmaps sul chart. Funzioni speciali sono state sviluppate per creare e modificare le proprietà dell'oggetto grafico. È possibile utilizzare queste funzioni "come è" nelle proprie applicazioni.

//--- descrizione
#property description "Lo script crea l'oggetto \"Bitmap Label\" ."
//--- mostra la finestra dei parametri di input durante il lancio dello script
#property script_show_inputs
//--- parametri di input dello script
input string            InpName="BmpLabel";               // nome dell'Etichetta
input string            InpFileOn="\\Images\\dollar.bmp"// Nome del file per modalità On
input string            InpFileOff="\\Images\\euro.bmp";  // Nome del File per modalità Off
input bool              InpState=false;                   // Etichetta premuta/rilasciata
input ENUM_BASE_CORNER  InpCorner=CORNER_LEFT_UPPER;      // Angolo del chart per l'ancoraggio
input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_CENTER;          // Tipo di ancoraggio
input color             InpColor=clrRed;                  // Colore del bordo quando si evidanzia
input ENUM_LINE_STYLE   InpStyle=STYLE_SOLID;             // Stile della linea quando si evidenzia
input int               InpPointWidth=1;                  // Grandezza del punto da muovere
input bool              InpBack=false;                    // Oggetti di sottofondo
input bool              InpSelection=false;               // Evidenzia di movimento
input bool              InpHidden=true;                   // Nascosto nella lista oggetti
input long              InpZOrder=0;                      // Priorità per il click del mouse
//+--------------------------------------------------------------------------------+
//| Crea l'oggetto Etichetta Bitmap                                                |
//+--------------------------------------------------------------------------------+
bool BitmapLabelCreate(const long              chart_ID=0,               // ID del chart
                       const string            name="BmpLabel",          // nome dell'etichetta
                       const int               sub_window=0,             // indice sottofinestra
                       const int               x=0,                      // coordinate X
                       const int               y=0,                      // coordinate Y
                       const string            file_on="",               // immagine in modalità On
                       const string            file_off="",              // immagine in modalità Off
                       const int               width=0,                  // ambito di visibilità coordinate X
                       const int               height=0,                 // ambito di visibilità coordinate Y
                       const int               x_offset=10,              // ambito di visibilità, slittamento sull' asse X
                       const int               y_offset=10,              // ambito di visibilità, slittamento sull'asse Y
                       const bool              state=false,              // premuto/rilasciato
                       const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// angolo del chart per l'ancoraggio
                       const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER// tipo di ancoraggio 
                       const color             clr=clrRed,               // colore del bordo quando evidenziato
                       const ENUM_LINE_STYLE   style=STYLE_SOLID,        // stile della linea quando evidenziata
                       const int               point_width=1,            // grandezza del punto di spostamento
                       const bool              back=false,               // in sottofondo
                       const bool              selection=false,          // evidenzia movimento
                       const bool              hidden=true,              // nascosto dalla lista oggetti
             const long              z_order=0)             // priorità per il click del mouse
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- crea un'etichetta bitmap
   if(!ObjectCreate(chart_ID,name,OBJ_BITMAP_LABEL,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": fallimento nel creare l'oggetto \"Bitmap Label\"! Error code = ",GetLastError());
      return(false);
     }
//--- imposta l'immagine in modalità On e Off
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,0,file_on))
     {
      Print(__FUNCTION__,
            ": fallimento nel caricare l'immagine per la modalità On! Error code = ",GetLastError());
      return(false);
     }
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,1,file_off))
     {
      Print(__FUNCTION__,
            ": fallimento nel caricare l'immagine per la modalità Off! Error code = ",GetLastError());
      return(false);
     }
//--- imposta le coordinate dell'etichetta
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- imposta ambito di visibilità per l'immagine; se i valori dello spessore o dell'altezza
//--- eccedono lo spessore e l'altezza(rispettivamente) di un'immagine sorgente,
//--- essa non viene disegnata; in caso contrario
//--- solo la parte corrispondente di questi valori viene disegnata
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- imposta la parte di un'immagine che dev'essere visualizzata nell'ambito visibilità
//--- la parte di default è la parte superiore sinistra dell'immagine; i valori permettono
//--- di eseguire uno slittamento da quest' area visualizzando un'altra parte dell'immagine
   ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset);
   ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset);
//--- definisce lo status dell'etichetta (premuta o rilasciata)
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- imposta l'angolo del chart, relativo a quali punti coordinate vengono definiti
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- imposta il tipo di ancora
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- imposta il colore del bordo quando è abilitata la modalità di evidenziazione
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- imposta lo stile del bordo della linea quando la modalità di evidenzia dell'oggetto è abilitata
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- imposta la grandezza di un punto di ancoraggio per lo spostamento di un oggetto
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- mostra in primo piano (false) o sottofondo (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- abilita (true) o disabilita (false) il modo di spostamento dell'etichetta con il mouse
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- nascondi (true) o mostra (falso) il nome di oggetto grafico nella lista degli oggetti
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- imposta la priorità per ricevere l'evento di un clic del mouse nel grafico
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Imposta una nuova immagine per l'oggetto Etichetta Bitmap                      |
//+--------------------------------------------------------------------------------+
bool BitmapLabelSetImage(const long   chart_ID=0,      // ID del chart
                         const string name="BmpLabel"// nome dell'etichetta
                         const int    on_off=0,        // modificatore (On o Off)
                         const string file="")         // percorso del file
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- imposta il percorso al file dell'immagine
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,on_off,file))
     {
      Print(__FUNCTION__,
            ": fallimento nel caricare l'immagine! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Sposta l'oggetto Etichetta Bitmap                                              |
//+--------------------------------------------------------------------------------+
bool BitmapLabelMove(const long   chart_ID=0,      // ID del chart
                     const string name="BmpLabel"// nome etichetta
                     const int    x=0,             // coordinate X
                     const int    y=0)             // coordinate Y
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- sposta l'oggetto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": fallimento nello spostamento delle coordinate X dell'oggetto! Error code = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": fallimento nello spostamento della coordinata Y dell'oggetto! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Cambia grandezza ambito di visibilità (oggetto)                                |
//+--------------------------------------------------------------------------------+
bool BitmapLabelChangeSize(const long   chart_ID=0,      // ID del chart
                           const string name="BmpLabel"// nome dell'etichetta
                           const int    width=0,         // spessore della linea
                           const int    height=0)        // altezza dell'etichetta
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- cambia la grandezza dell'oggetto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": fallimento nel cambiare lo spessore dell'oggetto! Error code = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": fallimento nel cambiare l'altezza dell'oggetto! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+----------------------------------------------------------------------------------+
//| Cambia le coordinate dell'angolo superiore sinistro dell'ambito di visibilità    |
//+----------------------------------------------------------------------------------+
bool BitmapLabelMoveVisibleArea(const long   chart_ID=0,      // ID del chart
                                const string name="BmpLabel"// nome dell'etichetta
                                const int    x_offset=0,      // ambito di visibilità coordinate X
                                const int    y_offset=0)      // ambito di visibilità coordinate Y
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- cambia le coordinate dell'ambito di visibilità dell'oggetto
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset))
     {
      Print(__FUNCTION__,
            ": fallimento nel cambiare le coordinate X dell'ambito di visibilità! Error code = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset))
     {
      Print(__FUNCTION__,
            ": fallimento nel cambiare le coordinate Y dell'ambito di visibilità! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Elimina l'oggetto "Etichetta Bitmap"                                           |
//+--------------------------------------------------------------------------------+
bool BitmapLabelDelete(const long   chart_ID=0,      // ID del chart
                       const string name="BmpLabel"// nome dell'etichetta
  {
//--- resetta il valore dell' errore
   ResetLastError();
//--- elimina l'etichetta
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": fallimento nell'eliminazione dell'oggetto \"Bitmap label\"! Error code = ",GetLastError());
      return(false);
     }
//--- esecuzione avvenuta
   return(true);
  }
//+--------------------------------------------------------------------------------+
//| Funzione di avvio del programma Script                                         |
//+--------------------------------------------------------------------------------+
voidOnStart()
  {
//--- grandezza della finestra chart
   long x_distance;
   long y_distance;
//--- imposta la grandezza della finestra
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("Fallimento nell'ottenere la grandezza del chart! Error code = ",GetLastError());
      return;
     }
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("Fallimento nell'ottenere l'altezza del chart! Error code = ",GetLastError());
      return;
     }
//--- definisce le coordinate dell'etichetta bitmap
   int x=(int)x_distance/2;
   int y=(int)y_distance/2;
//--- imposta la grandezza dell'etichetta e le coordinate dell'ambito di visibilità
   int width=32;
   int height=32;
   int x_offset=0;
   int y_offset=0;
//--- imposta l'etichetta bitmap al centro della finestra
   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;
     }
//--- ridisegna il chart e ne attende un secondo
   ChartRedraw();
   Sleep(1000);
//--- cambio dell'ambito di visibilità dell'etichetta nel loop
   for(int i=0;i<6;i++)
     {
      //--- cambia la grandezza dell'ambito di visibilità
      width--;
      height--;
      if(!BitmapLabelChangeSize(0,InpName,width,height))
         return;
      //--- controlla se l'operazione dello script è stata disabilitata per forza
      if(IsStopped())
         return;
      //--- ridisegna il chart
      ChartRedraw();
      // 0.3 secondi di ritardo
      Sleep(300);
     }
//--- 1 secondo di ritardo
   Sleep(1000);
//--- cambia le coordinate dell'ambito di visibilità nel loop
   for(int i=0;i<2;i++)
     {
      //--- cambia le coordinate dell'ambito di visibilità
      x_offset++;
      y_offset++;
      if(!BitmapLabelMoveVisibleArea(0,InpName,x_offset,y_offset))
         return;
      //--- controlla se l'operazione dello script è stata disabilitata per forza
      if(IsStopped())
         return;
      //--- ridisegna il chart
      ChartRedraw();
      // 0.3 secondi di ritardo
      Sleep(300);
     }
//--- 1 secondo di ritardo
   Sleep(1000);
//--- elimina l'etichetta
   BitmapLabelDelete(0,InpName);
   ChartRedraw();
//--- 1 secondo di ritardo
   Sleep(1000);
//---
  }