ResourceCreate

Bir veri setini temel alarak, bir görüntü kaynağı oluşturur. Fonksiyonun iki çeşidi vardır:
Bir dosya temelinde, bir kaynak yaratan

bool  ResourceCreate(
   const string      resource_name,       // Kaynak ismi
   const string      path                 // Dosya için göreli bir konum
   );

Bir pikseller dizisi temelinde, bir kaynak oluşturan

bool  ResourceCreate(
   const string      resource_name,       // Kaynak ismi
   const uint&       data[],              // Dizi şeklinde veri seti
   uint              img_width,           // Görüntü kaynağının genişliği
   uint              img_height,          // Görüntü kaynağının yüksekliği
   uint              data_xoffset,        // Görüntünün sol üst köşesinin sağa doğru yatay konumu
   uint              data_yoffset,        // Görüntünün sol üst köşesinin aşağı doğru dikey konumu
   uint              data_width,          // Veri seti temelinde toplam görüntü genişliği
   ENUM_COLOR_FORMAT color_format         // Renk işleme yöntemi
   );

Parametreler

resource_name

[in]  Kaynak ismi.

data[][]

[in]  Bütün bir görüntü oluşturmak için tek veya iki boyutlu dizi

img_width

[in]  Kaynağa yerleştirilecek dik dörtgen şekilli görüntü alanının pikseller bazında genişliği. Bu, data_width değerinden büyük olamaz.

img_height

[in]  Kaynağa yerleştirilecek dik dörtgen şekilli görüntü alanının pikseller bazında yüksekliği.

data_xoffset

[in]  Görüntünün dikdörtgensel alanının sağa doğru yatay konumu.

data_yoffset

[in]  Görüntünün dikdörtgensel alanının aşağı doğru dikey konumu.

data_width

[in]  Sadece tek boyutlu dizilerde istenir. Veri setinden görüntünün tam genişliğini ifade eder. data_width=0 ise, img_width'e eşit olduğu kabul edilir. İki boyutlu dizilerde bu parametre gözardı edilir ve data[] dizisinin ikinci boyutuna eşit olduğu kabul edilir.

color_format

[in]  Renk işleme yöntemi, ENUM_COLOR_FORMAT sayımının değerlerinden biri olabilir.

Dönüş değeri

Başarılı ise 'true' değerine, aksi durumda 'false' değerine dönüş yapar. Hata ile ilgili bilgi almak için GetLastError() fonksiyonunu çağırın. Şu hatalar gerçekleşebilir:

  • 4015 – ERR_RESOURCE_NAME_DUPLICATED (dinamik ve statik kaynak isimlerinin aynı olması)
  • 4016 – ERR_RESOURCE_NOT_FOUND (kaynak bulunamadı)
  • 4017 – ERR_RESOURCE_UNSUPPORTED_TYPE (bu kaynak tipi desteklenmiyor)
  • 4018 – ERR_RESOURCE_NAME_IS_TOO_LONG (kaynak ismi çok uzun)

Not

Fonksiyonun ikinci versiyonu, aynı kaynağı farklı yükseklik, genişlik ve kaydırma parametreleriyle oluşturmak için çağrılırsa, yeni bir kaynak oluşturmayacak, aksine var olanı güncelleyecekir.

Fonksiyonun ilk versiyonu dosyalardan görüntü ve ses yüklemek için kullanılır, ikinci versiyonu ise sadece görüntülerin dinamik olarak oluşturulması için kullanılır.

Görüntüler, 24 veya 32 bitlik renk derinliği ile BMP biçiminde olmalıdır. Sesler sadece WAV biçiminde olabilir. Kaynak büyüklüğü 16 Mb'i aşmamalıdır.
 

ENUM_COLOR_FORMAT

Tanımlayıcı

Açıklama

COLOR_FORMAT_XRGB_NOALPHA

Alfa kanalı bileşeni gözardı edilir

COLOR_FORMAT_ARGB_RAW

Renk bileşenleri terminal tarafından işlenmez (kullanıcı tarafından düzgün şekilde ayarlanmalıdır)

COLOR_FORMAT_ARGB_NORMALIZE

Renk bileşenleri terminal tarafından işlenir

Örnek:

//+------------------------------------------------------------------+
//| Grafiksel kaynak verisini güncelle                               |
//+------------------------------------------------------------------+
void Update(const string res_name,const uint &pixel_data[],const uint width,const uint height,const bool redraw)
  {
//--- sıfır boyut iletilirse bırak
   if(width==0 || height==0)
      return;
//--- kaynak verisini güncelle ve grafiği yeniden çiz
   if(ResourceCreate(res_name,pixel_data,width,height,0,0,0,COLOR_FORMAT_ARGB_NORMALIZE) && redraw)
      ChartRedraw();
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- grafiksel kaynağın parametrelerini bildir
   string rc_name="Resource";
   uint   rc_width=100;
   uint   rc_height=100;
   uint   rc_data[];
   uint   rc_size=rc_width*rc_height;
 
   ResetLastError();
//--- piksel dizisinin büyüklüğünü ayarla
   if(ArrayResize(rc_data,rc_size)!=rc_size)
     {
      Print("ArrayResize() failed. Error code: ",GetLastError());
      return;
     }
//--- piksel dizisini saydam bir renkle doldur ve buna dayalı bir grafiksel kaynak oluştur
   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());
 
//--- oluşturulan grafiksel kaynağı kontrol et
//--- geçerli çubuğun zaman ve fiyat verilerini al
   MqlTick tick={};
   if(!SymbolInfoTick(Symbol(),tick))
     {
      Print("SymbolInfoTick() failed. Error code: ",GetLastError());
      return;
     }
//--- son tik fiyatının ve zamanının koordinatlarını kullanarak bir bitmap nesnesi oluştur
   string obj_name="Bitmap";
   if(!ObjectCreate(0,obj_name,OBJ_BITMAP,0,tick.time,tick.bid))
     {
      Print("ObjectCreate() failed. Error code: ",GetLastError());
      return;
     }
//--- oluşturulan bitmap nesnesinin genişlik ve yüksekliğini grafiksel kaynağın genişlik ve yüksekliğine eşit olarak ayarla
//--- nesne çapa noktasını merkezine ayarla
   ObjectSetInteger(0,obj_name,OBJPROP_XSIZE,rc_width);
   ObjectSetInteger(0,obj_name,OBJPROP_YSIZE,rc_height);
   ObjectSetInteger(0,obj_name,OBJPROP_ANCHOR,ANCHOR_CENTER);
//--- önceden oluşturulmuş grafiksel kaynağı bitmap nesnesi için bir görüntü dosyası olarak belirt
//--- bu durumda, kullanılan grafiksel kaynağın adını belirtmek için adının önüne "::" eklememiz gerekir
   ObjectSetString(0,obj_name,OBJPROP_BMPFILE,"::"+rc_name);
   
//--- DodgerBlue rengini 200 şeffaflık ile ayarla
   uint clr=ColorToARGB(clrDodgerBlue,200);
//--- grafiksel kaynağın tüm piksel dizisini ayarlanan renkle doldur
   ArrayInitialize(rc_data,clr);
//--- grafiksel kaynak verisini güncelle
   Update(rc_name,rc_data,rc_width,rc_height,true);
  }

Ayrıca Bakınız

Kaynaklar, ObjectCreate(), ObjectSetString(), OBJPROP_BMPFILE