ResourceCreate

Crea una risorsa immagine basata su un insieme di dati. Ci sono due varianti della funzione:
Creazione di una risorsa basata su un file

bool  ResourceCreate(
   const string      resource_name,       // Nome della risorsa
   const string      path                 // Un percorso relativo, al file
   );

Creazione di una risorsa in base all'array di pixel

bool  ResourceCreate(
   const string      resource_name,       // Nome della risorsa
   const uint&       data[],              // Data impostata come un array
   uint              img_width,           // Lo spessore della risorsa immagine
   uint              img_height,          // L'altezza della risorsa immagine
   uint              data_xoffset,        // L'offset del verso destro orizzontale dell'angolo superiore sinistro dell'immagine
   uint              data_yoffset,        // L'offset del verso in basso verticale dell'angolo superiore sinistro dell'immagine
   uint              data_width,          // Lo spessore totale dell'immagine basato sul set di dati
   ENUM_COLOR_FORMAT color_format         // Metodo di elaborazione del colore
   );

Parametri

resource_name

[in]  Nome risorsa.

data[][]

[in]  Un array uni-dimensionale o bi-dimensionale per creare un'immagine completa.

img_width

[in] La larghezza dell'area rettangolare dell'immagine in pixel che devono essere immessi nella risorsa sottoforma di un'immagine. Non può essere maggiore di data_width (valore).

img_height

[in] L'altezza dell'area rettangolare dell'immagine in pixel da collocare nella risorsa sottoforma di un'immagine.

data_xoffset

[in] L'offset orizzontale verso destra dell'area rettangolare dell'immagine.

data_yoffset

[in] L'offset verticale verso il basso dell'area rettangolare dell'immagine.

data_width

[in] Obbligatorio solo per array monodimensionali. Denota l'intera larghezza della immagine dal set di dati. Se data_width=0, è considerato essere uguale a img_width. Per array bi-dimensionali il parametro viene ignorato e viene assunto essere pari alla seconda dimensione dei dati[] dell'array.

color_format

[in] Metodo di elaborazione dei colori, da un valore dell'enumerazione ENUM_COLOR_FORMAT.

Valore restituito

Restituisce true se ha successo, altrimenti false. Per ottenere informazioni sull'errore chiamare la funzione GetLastError(). Possono verificarsi i seguenti errori:

  • 4015 - ERR_RESOURCE_NAME_DUPLICATED (nomi identici della dinamica e delle risorse statiche)
  • 4016 – ERR_RESOURCE_NOT_FOUND (la risorsa non è stata trovata)
  • 4017 – ERR_RESOURCE_UNSUPPORTED_TYPE (questo tipo di risorsa non è supportato)
  • 4018 – ERR_RESOURCE_NAME_IS_TOO_LONG (il nome della risorsa è troppo lungo)

Nota

Se la seconda versione della funzione viene chiamata per creare la stessa risorsa con diversa larghezza, altezza e parametri di slittamento, non crea una nuova risorsa, ma aggiorna semplicemente quella esistente.

La prima versione della funzione viene utilizzata per il caricamento delle immagini e suoni da file, e la seconda versione viene utilizzata solo per la creazione dinamica di immagini.

Le immagini devono essere in formato BMP con una profondità di colore di 24 o 32 bit. I suoni possono essere solo in formato WAV. La dimensione della risorsa non deve superare i 16 Mb.
 

ENUM_COLOR_FORMAT

Identificatore

Descrizione

COLOR_FORMAT_XRGB_NOALPHA

La componente del canale alfa viene ignorata

COLOR_FORMAT_ARGB_RAW

Componenti di colore non vengono gestiti dal terminale (devono essere correttamente impostati dall'utente)

COLOR_FORMAT_ARGB_NORMALIZE

Componenti colore vengono gestiti dal terminale

Esempio:

//+------------------------------------------------------------------+
//| Aggiornamento dei dati delle risorse grafiche                    |
//+------------------------------------------------------------------+
void Update(const string res_name,const uint &pixel_data[],const uint width,const uint height,const bool redraw)
  {
//-- uscire se vengono passate dimensioni zero
   if(width==0 || height==0)
      return;
//-- Aggiorna i dati delle risorse e ridisegna il grafico
   if(ResourceCreate(res_name,pixel_data,width,height,0,0,0,COLOR_FORMAT_ARGB_NORMALIZE) && redraw)
      ChartRedraw();
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- dichiarare i parametri della risorsa grafica
   string rc_name="Resource";
   uint   rc_width=100;
   uint   rc_height=100;
   uint   rc_data[];
   uint   rc_size=rc_width*rc_height;
 
   ResetLastError();
//-- impostare la dimensione dell'array dei pixel
   if(ArrayResize(rc_data,rc_size)!=rc_size)
     {
      Print("ArrayResize() failed. Error code: ",GetLastError());
      return;
     }
//--- riempire l'array di pixel con un colore trasparente e creare una risorsa grafica basata su di esso
   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());
 
//--- controlla la risorsa grafica creata.
//-- ottenere i dati di tempo e prezzo della barra corrente
   MqlTick tick={};
   if(!SymbolInfoTick(Symbol(),tick))
     {
      Print("SymbolInfoTick() failed. Error code: ",GetLastError());
      return;
     }
//--- creare l'oggetto Bitmap utilizzando le coordinate del prezzo e del tempo dell'ultimo tick
   string obj_name="Bitmap";
   if(!ObjectCreate(0,obj_name,OBJ_BITMAP,0,tick.time,tick.bid))
     {
      Print("ObjectCreate() failed. Error code: ",GetLastError());
      return;
     }
//--- impostare la larghezza e l'altezza dell'oggetto bitmap creato uguale alla larghezza e all'altezza della risorsa grafica.
//--- impostare il punto di ancoraggio dell'oggetto al suo centro.
   ObjectSetInteger(0,obj_name,OBJPROP_XSIZE,rc_width);
   ObjectSetInteger(0,obj_name,OBJPROP_YSIZE,rc_height);
   ObjectSetInteger(0,obj_name,OBJPROP_ANCHOR,ANCHOR_CENTER);
//--- specificare la risorsa grafica precedentemente creata per l'oggetto bitmap come file immagine
//--- in questo caso, per indicare il nome della risorsa grafica usata, dobbiamo aggiungere "::" prima del suo nome
   ObjectSetString(0,obj_name,OBJPROP_BMPFILE,"::"+rc_name);
   
//-- impostare il colore DodgerBlue con la trasparenza di 200
   uint clr=ColorToARGB(clrDodgerBlue,200);
//-- riempie l'intero array di pixel della risorsa grafica con il colore impostato
   ArrayInitialize(rc_data,clr);
//--- aggiornare i dati delle risorse grafiche
   Update(rc_name,rc_data,rc_width,rc_height,true);
  }

Vedi anche

Risorse, ObjectCreate(), ObjectSetString(), OBJPROP_BMPFILE