ResourceCreate

Erstellt die Ressource eines Bildes basierend auf dem Datensatz. Es gibt zwei Versionen der Funktion:
Erstellen einer Datei-basierte Ressource

bool  ResourceCreate(
   const string      resource_name,       // Ressourcenname
   const string      path                 // Ein relativer Pfad zur Datei
   );

Erstellen einer Ressource basierend auf einem Array von Pixeln

bool  ResourceCreate(
   const string      resource_name,       // Name der Ressource
   const uint&       data[],              // Datensatz im Form eines Arrays 
   uint              img_width,           // Breite der erstellten Bildressource
   uint              img_height,          // Höhe der erstellten Bildressource
   uint              data_xoffset,        // Verschiebung der linken oberen Ecke des erzeugten Bildes horizontal nach rechts
   uint              data_yoffset,        // vertikale Abwärtsverschiebung der linken oberen Ecke des erzeugten Bildes
   uint              data_width,          // Gesamtbreite des Bildes basierend auf den Datensatz
   ENUM_COLOR_FORMAT color_format         // Farbverarbeitungsmethode
   );

Parameter

resource_name

[in]  Name der Ressource.

data[][]

[in]  Eindimensionales oder zweidimensionales Array um ein vollständiges Bild zu erstellen.

img_width

[in]  Breite der rechteckigen Bereich des Bildes in Pixel um in der Ressource in der Form von Bildern zu speichern. Es kann nicht mehr als data_width sein.

img_height

[in]  Höhe der rechteckigen Bereich des Bildes in Pixel um in der Ressource in der Form von Bildern zu speichern.

data_xoffset

[in]  Horizontaler Offset der rechteckigen Bereich des Bildes in Pixel nach rechts.

data_yoffset

[in]  Vertikaler Offset der rechteckigen Bereich des Bildes in Pixel nach unten.

data_width

[in]  Nur für eindimensionale Arrays erforderlich und impliziert die volle Breite des aus dem Datensatz zu erstellenden Bildes. Wenn data_width=0 ist, wird angenommen, dass er gleich img_width angenommen. Für zweidimensionale Arrays, wird dieser Parameter ignoriert, und es wird angenommen, dass er der zweite Dimension des Arrays data[] gleich ist.

color_format

[in]  Farbe Verarbeitungsmethode aus der Enumeration ENUM_COLOR_FORMAT.

Rückgabewert

Gibt bei Erfolg true zurück, ansonsten false. Um Informationen über den Fehler zu erhalten, rufen Sie die Funktion GetLastError(). Mögliche Fehler:

  • 4015 – ERR_RESOURCE_NAME_DUPLICATED (die Namen der dynamischen und statischen Ressourcen sind gleich)
  • 4016 – ERR_RESOURCE_NOT_FOUND (Ressource nicht gefunden)
  • 4017 - ERR_RESOURCE_UNSUPPORTED_TYPE (Ressource-Typ wird nicht unterstützt)
  • 4018 - ERR_RESOURCE_NAME_IS_TOO_LONG (Name der Ressource ist zu lang).

Hinweis

Wenn die zweite Version der Funktion aufgerufen wird, um die gleiche Ressource mit unterschiedlichen Parametern von Breite, Höhe und Offset zu erstellen, die neue Ressource nicht erstellt, sondern einfach eine vorhandene Ressource aktualisiert wird.

Die erste Version der Funktion erlaubt Ihnen, Bilder und Sounds aus Dateien zu laden, wird die zweite Version nur für die dynamische Erstellung von Bildern verwendet.

Die Bilder müssen im BMP-Format mit einer Farbtiefe von 24 oder 32 Bit sein, Sounds können nur im Format WAV sein. Die Größe der Ressource sollte nicht mehr als 16 Mb sein.

ENUM_COLOR_FORMAT

Bezeichnung

Beschreibung

COLOR_FORMAT_XRGB_NOALPHA

Bestandteil der Alpha-Kanal wird ignoriert

COLOR_FORMAT_ARGB_RAW

Die Farbkomponenten werden durch das Terminal nicht verarbeitet (müssen korrekt durch den Nutzer angegeben werden)  

COLOR_FORMAT_ARGB_NORMALIZE

Die Farbkomponenten werden durch das Terminal verarbeitet  

Beispiel:

//+------------------------------------------------------------------+
//| Grafische Ressourcendaten aktualisieren                          |
//+------------------------------------------------------------------+
void Update(const string res_name,const uint &pixel_data[],const uint width,const uint height,const bool redraw)
  {
//--- Verlassen, wenn Dimensionen von 0 übergeben wurden
   if(width==0 || height==0)
      return;
//--- Ressourcendaten aktualisieren und den Chart neu zeichnen
   if(ResourceCreate(res_name,pixel_data,width,height,0,0,0,COLOR_FORMAT_ARGB_NORMALIZE) && redraw)
      ChartRedraw();
  }
//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Deklaration der Parameter der grafischen Ressource
   string rc_name="Resource";
   uint   rc_width=100;
   uint   rc_height=100;
   uint   rc_data[];
   uint   rc_size=rc_width*rc_height;
 
   ResetLastError();
//--- Festlegen der Größe des Pixelarrays
   if(ArrayResize(rc_data,rc_size)!=rc_size)
     {
      Print("ArrayResize() failed. Error code: ",GetLastError());
      return;
     }
//--- Füllen des Pixelarrays mit einer transparenten Farbe und Erstellen einer grafischen Ressource auf der Grundlage dieser Farbe
   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());
 
//--- Überprüfung der erstellten grafischen Ressource.
//--- Ermitteln der Zeit- und Preisdaten des aktuellen Balkens
   MqlTick tick={};
   if(!SymbolInfoTick(Symbol(),tick))
     {
      Print("SymbolInfoTick() failed. Error code: ",GetLastError());
      return;
     }
//--- Erstellen des Bitmap-Objekts unter Verwendung der Koordinaten des letzten Tickpreises und der Zeit
   string obj_name="Bitmap";
   if(!ObjectCreate(0,obj_name,OBJ_BITMAP,0,tick.time,tick.bid))
     {
      Print("ObjectCreate() failed. Error code: ",GetLastError());
      return;
     }
//--- die Breite und Höhe des erstellten Bitmap-Objekts auf die Breite und Höhe der grafischen Ressource einstellen.
//--- Setzen des Ankerpunkts des Objekts auf seine Mitte.
   ObjectSetInteger(0,obj_name,OBJPROP_XSIZE,rc_width);
   ObjectSetInteger(0,obj_name,OBJPROP_YSIZE,rc_height);
   ObjectSetInteger(0,obj_name,OBJPROP_ANCHOR,ANCHOR_CENTER);
//--- Angabe der zuvor erstellten grafischen Ressource für das Bitmap-Objekt als Bilddatei
//--- in diesem Fall müssen wir, um den Namen der verwendeten grafischen Ressource anzugeben, "::" vor ihrem Namen hinzufügen
   ObjectSetString(0,obj_name,OBJPROP_BMPFILE,"::"+rc_name);
   
//--- Einstellen der Farbe DodgerBlue mit einer Transparenz von 200
   uint clr=ColorToARGB(clrDodgerBlue,200);
//--- Füllen des gesamten Pixelarrays der grafischen Ressource mit der eingestellten Farbe
   ArrayInitialize(rc_data,clr);
//--- Aktualisierung der grafischen Ressourcendaten
   Update(rc_name,rc_data,rc_width,rc_height,true);
  }

Siehe auch

Ressourcen, ObjectCreate(), ObjectSetString(), OBJPROP_BMPFILE