MetaTrader 5 herunterladen

OBJ_BITMAP_LABEL

Objekt "Bitmap Label".

ObjBitmapLabel

Hinweis

Die Position des Bezugspunktes relativ zum Zeichen kann aus der Enumeration ENUM_ANCHOR_POINT gewählt werden. Koordinaten des Bezugspunktes werden in Pixel angegeben.

Sie können auch den Bezugswinkel von Bitmap Label aus der Enumeration ENUM_BASE_CORNER wählen.

Für Objekt "Bitmap Label" können Sie Scope der Zeichnung.

Beispiel

Das folgende Skript erstellt auf dem Chart einige Bilder. Um die Eigenschaften eines grafischen Objekts zu erstellen und ändern, gibt es speziale Funktionen, die Sie "wie es ist" für Ihre eigenen Programme verwenden können.

//--- Beschreibung
#property description "Das Skript erstellt Objekt \"Bitmap Label\"."
//--- Zeigen den Fenster von Eingabeparametern in der Skript-Startup
#property script_show_inputs
//--- Eingangsparameter von Skript
input string            InpName="BmpLabel";               // Name von Label
input string            InpFileOn="\\Images\\dollar.bmp"// Der Dateiname für Modus On
input string            InpFileOff="\\Images\\euro.bmp";  // Der Dateiname für Modus Off
input bool              InpState=false;                   // Label gedrückt/ungedrückt
input ENUM_BASE_CORNER  InpCorner=CORNER_LEFT_UPPER;      // Der Winkel des Charts für Bindung
input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_CENTER;          // Bezugsmethode
input color             InpColor=clrRed;                  // Farbe des Rahmens bei der Markierung 
input ENUM_LINE_STYLE   InpStyle=STYLE_SOLID;             // Linienstil bei der Markierung
input int               InpPointWidth=1;                  // Größe des Punktes zu bewegen
input bool              InpBack=false;                    // Objekt im Hintergrund
input bool              InpSelection=false;               // Wählen zu bewegen
input bool              InpHidden=true;                   // Ausgeblendet in der Liste der Objekten
input long              InpZOrder=0;                      // Priorität auf Mausklick
//+------------------------------------------------------------------+
//| Erstellt das Objekt "Bitmap Label"                               |
//+------------------------------------------------------------------+
bool BitmapLabelCreate(const long              chart_ID=0,               // ID des Charts
                       const string            name="BmpLabel",          // Name des Objekts
                       const int               sub_window=0,             // Nummer des Unterfensters
                       const int               x=0,                      // X-Koordinate
                       const int               y=0,                      // Y-Koordinate
                       const string            file_on="",               // Bild im Modus On
                       const string            file_off="",              // Bild im Modus Off
                       const int               width=0,                  // X-Koordinate des Rahmens
                       const int               height=0,                 // Y-Koordinate des Rahmens
                       const int               x_offset=10,              // X-Offset des Rahmens
                       const int               y_offset=10,              // Y-Offset des Rahmens
                       const bool              state=false,              // gedruckt/ungedruckt
                       const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// Ecke des Charts zu binden
                       const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER// Bindungsmethode 
                       const color             clr=clrRed,               // Rahmenfarbe bei der Markerung
                       const ENUM_LINE_STYLE   style=STYLE_SOLID,        // Linienstil bei der Markierung
                       const int               point_width=1,            // Größe des Punktes
                       const bool              back=false,               // Im Hintergrund
                       const bool              selection=false,          // Markieren zu bewegen
                       const bool              hidden=true,              // Ausgeblendet in der Liste der Objekten
                       const long              z_order=0)                // Priorität für Mausklick
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Bitmap Label erstellen
   if(!ObjectCreate(chart_ID,name,OBJ_BITMAP_LABEL,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": Objekt \"Bitmap Label\" konnte nicht erstellt werden! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- Wählen Bilder für Modi On und Off
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,0,file_on))
     {
      Print(__FUNCTION__,
            ": Bild für Modus On konnte nicht erstellt werden! Fehlercode = ",GetLastError());
      return(false);
    ;}
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,1,file_off))
     {
      Print(__FUNCTION__,
            ": Bild für Modus Off konnte nicht erstellt werden! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- Die Koordinaten des Schilds setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- Bildrahmen eingebenö wenn die Werte von Breite oder Höhe
//--- größer als die Breite und Höhe des ursprünglichen Bildes sind, dann
//--- wird es nicht gezeichnet; wenn die Werte von Breite und Höhe sind kleiner als die Bildgröße,
//--- dann sein Teil, der diesen Größen entspricht, gezeichnet wird
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- setzen den Teil des Bildes, der in den Rahmen angezeigt werden soll
//--- Standardmäßig ist es der linke obere Bereich des Bildes; durch den Wert
//--- kann es von diesem Bild bewegt werden
   ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset);
   ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset);
//--- Zustand von Label (gedrückt oder nicht)
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- wählen die Ecke des Charts, relativ zu der die Punktkoordinaten eingegeben werden
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- die Bindungsmethode setzen
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- Farbe des Rahmens bei der Markierung des Objektes
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- Linienstil des Rahmens bei der Markierung des Objektes
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- die Größe des Punktes, den benutzt werden kann, um ein Objekt zu bewegen
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- Im Vordergrund (false) oder Hintergrund (true) anzeigen
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- Aktivieren (true) oder deaktivieren (false) Mausbewegung Modus
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- Verbergen (true) oder Anzeigen (false) den Namen des graphischen Objektes in der Objektliste
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- setzen die Priorität für eine Mausklick-Ereignisse auf dem Chart
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Ein neues Bild für "Bitmap Label" setzen     |
//+------------------------------------------------------------------+
bool BitmapLabelSetImage(const long   chart_ID=0,      // ID des Charts
                         const string name="BmpLabel"// Name des Objekts
                         const int    on_off=0,        // Modifier (On oder Off)
                         const string file="")         // Pfad zur Datei
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Pfad zur Datei mit dem Bild setzen
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,on_off,file))
     {
      Print(__FUNCTION__,
            ": Bild konnte nicht geladen werden! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Verschiebt das Objekt "Bitmap Label"                            |
//+------------------------------------------------------------------+
bool BitmapLabelMove(const long   chart_ID=0,      // ID des Charts
                     const string name="BmpLabel"// Name des Labels
                     const int    x=0,             // X-Koordinate
                     const int    y=0)             // Y-Koordinate
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Objekt bewegen
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": X-Koordinate des Objekts konnte nicht bewegt werden! Fehlercode = ",GetLastError());
      return(false);
    ;}
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": Y-Koordinate des Objekts konnte nicht bewegt werden! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Ändert Rahmen des Objekts (Objektgröße)               |
//+------------------------------------------------------------------+
bool BitmapLabelChangeSize(const long   chart_ID=0,      // ID des Charts
                     const string name="BmpLabel"// Name des Labels
                           const int    width=0,         // Breite von Label
                           const int    height=0)        // Höhe von Label
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Objektgröße ändern
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": Breite des Objekts konnte nicht geändert werden! Fehlercode = ",GetLastError());
      return(false);
    ;}
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": Höhe des Objekts konnte nicht geändert werden! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Ändert die Koordinate der oberen linken Ecke von Bildrahmen |
//+------------------------------------------------------------------+
bool BitmapLabelMoveVisibleArea(const long   chart_ID=0,      // ID des Charts
                                const string name="BmpLabel"// Name des Objekts
                                const int    x_offset=0,      // X-Koordinate des Rahmens
                                const int    y_offset=0)      // Y-Koordinate des Rahmens
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- Koordinaten des Objektrahmens ändern
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset))
     {
      Print(__FUNCTION__,
            ": X-Koordinate des Objektrahmens konnte nicht geändert werden! Fehlercode = ",GetLastError());
      return(false);
    ;}
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset))
     {
      Print(__FUNCTION__,
            ": Y-Koordinate des Objektrahmens konnte nicht geändert werden! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Löscht das Objekt "Bitmap Label"                               |
//+------------------------------------------------------------------+
bool BitmapLabelDelete(const long   chart_ID=0,      // ID des Charts
                       const string name="BmpLabel"// Name des Objekts
  {
//--- Setzen den Wert des Fehlers zurück
   ResetLastError();
//--- das Schild löschen
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": Objekt \"Bitmap Label\" konnte nicht gelöscht werden! Fehlercode = ",GetLastError());
      return(false);
    ;}
//--- die erfolgreiche Umsetzung
   return(true);
 ;}
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Größe des Chartfensters
   long x_distance;
   long y_distance;
//--- Größe des Chartfensters definieren
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("Konnte nicht Breite des Charts bekommen! Fehlercode = ",GetLastError());
      return;
    ;}
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("Konnte nicht Höhe des Charts bekommen! Fehlercode = ",GetLastError());
      return;
    ;}
//--- Die Koordinaten des Objekts definieren
   int x=(int)x_distance/2;
   int y=(int)y_distance/2;
//--- Objektgröße und Koordinate des Rahmens setzen
   int width=32;
   int height=32;
   int x_offset=0;
   int y_offset=0;
//--- Bitmap Label auf der Mitte des Fensters platzieren
   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;
    ;}
//--- den Chart neu zeichnen und 1 Sekunde warten
   ChartRedraw();
   Sleep(1000);
//--- Größe des Objektrahmens im Loop ändern
   for(int i=0;i<6;i++)
     {
      //--- Größe des Objektrahmens ändern
      width--;
      height--;
      if(!BitmapLabelChangeSize(0,InpName,width,height))
         return;
 //--- Überprüfen die Fakten von Zwangsabschaltung der Skript
      if(IsStopped())
         return;
      //--- den Chart neu zeichnen
      ChartRedraw();
      // Verzögerung 0.3 Sekunden
      Sleep(300);
    ;}
//--- 1 Sekunde Verzögerung
   Sleep(1000);
//--- Koordinaten des Objektrahmens im Loop ändern
   for(int i=0;i<2;i++)
     {
      //--- Koordinaten des Objektrahmens ändern
      x_offset++;
      y_offset++;
      if(!BitmapLabelMoveVisibleArea(0,InpName,x_offset,y_offset))
         return;
 //--- Überprüfen die Fakten von Zwangsabschaltung der Skript
      if(IsStopped())
         return;
      //--- den Chart neu zeichnen
      ChartRedraw();
      // Verzögerung 0.3 Sekunden
      Sleep(300);
    ;}
//--- 1 Sekunde Verzögerung
   Sleep(1000);
//--- das Schild löschen
   BitmapLabelDelete(0,InpName);
   ChartRedraw();
//--- 1 Sekunde Verzögerung
   Sleep(1000);
//---
 ;}