ResourceSave

Bir kaynağı belirtilen bir dosyaya kaydeder.

bool  ResourceSave(
   const string  resource_name      // Kaynak ismi
   const string  file_name          // Dosya ismi
   );

Parametreler

resource_name

[in]  Kaynağın ismi "::" ile başlamalıdır.

file_name

[in]  Dosyanın, MQL5\Files yoluna göre ismi.

Dönüş değeri

Başarı durumunda 'true', aksi durumda 'false'. Hata bilgisi için GetLastError() fonksiyonunu çağırın.

Not

Fonksiyon her zaman dosyanın üzerine yazar ve eğer gerekliyse tüm istenen orta seviye dosya yollarını, dosya isminin içinde oluşturur.

Örnek:

//--- grafiksel kaynak parametreleri
string ExtResName="Resource";
int    ExtResWidth=100;
int    ExtResHeight=100;
uint   ExtResData[];
int    ExtResSize=ExtResWidth*ExtResHeight;
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   ResetLastError();
//--- piksel dizisinin büyüklüğünü ayarla
   if(ArrayResize(ExtResData,ExtResSize)!=ExtResSize)
     {
      Print("ArrayResize() failed. Error code: ",GetLastError());
      return;
     }
//--- piksel dizisini saydam bir renkle doldur ve buna dayalı bir grafiksel kaynak oluştur
   ArrayInitialize(ExtResData,0x00FFFFFF);
   if(!ResourceCreate(ExtResName,ExtResData,ExtResWidth,ExtResHeight,0,0,0,COLOR_FORMAT_ARGB_NORMALIZE))
     {
      Print("ResourceCreate() failed. Error code: ",GetLastError());
      return;
     }
   Print("Size of created recource array: ",ExtResData.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,ExtResWidth);
   ObjectSetInteger(0,obj_name,OBJPROP_YSIZE,ExtResHeight);
   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,"::"+ExtResName);
   
//--- GreenYellow rengini 200 şeffaflık ile ayarla
   uint clr=ColorToARGB(clrGreenYellow,200);
//--- grafiksel kaynağın tüm piksel dizisini ayarlanan renkle doldur
   ArrayInitialize(ExtResData,clr);
//--- DodgerBlue rengini kullanarak ızgarayı çiz
   for(int x=0;x<ExtResWidth;x+=9)
      LineVertical(x,0,ExtResHeight,ColorToARGB(clrDodgerBlue,200));
   for(int y=0;y<ExtResHeight;y+=9)
      LineHorizontal(0,ExtResWidth,y,ColorToARGB(clrDodgerBlue,200));
//--- grafiksel kaynak verisini güncelle
   Update(ExtResName,ExtResData,ExtResWidth,ExtResHeight,true);
   
//--- kaynağı ve grafiksel nesneyi silmeden önce üç saniye bekle
   Print("Wait 3 seconds before deleting the resource and graphic object");
   Sleep(3000);
 
//--- kaynağı dosyaya kaydet
   ResetLastError();
   if(!ResourceSave("::"+ExtResName,"ResourceSave\\"+ExtResName+".bmp"))
     {
      Print("ResourceSave() failed. Error code: ",GetLastError());
      return;
     }
//--- kaynak ve grafiksel nesne görüntüsünü sil
   if(!ResourceFree("::"+ExtResName))
     {
      Print("ResourceFree() failed. Error code: ",GetLastError());
      return;
     }
   if(!ObjectDelete(0,obj_name))
     {
      Print("ObjectDelete() failed. Error code: ",GetLastError());
      return;
     }
 
//--- şimdi son tikin fiyat ve zaman koordinatlarını kullanarak görüntü genişliği kadar sola kaydırılmış bir grafiksel etiket nesnesi oluştur
//--- önceden alınan son tik fiyatını ve zamanını kullanarak ekran koordinatlarını al
   int x=0,y=0;
   if(!ChartTimePriceToXY(0,0,tick.time,tick.bid,x,y))
     {
      Print("ChartTimePriceToXY() failed. Error code: ",GetLastError());
      return;
     }
   obj_name="BitmapLabel";
   if(!ObjectCreate(0,obj_name,OBJ_BITMAP_LABEL,0,0,0))
     {
      Print("ObjectCreate() failed. Error code: ",GetLastError());
      return;
     }
//--- nesne çapa noktasını merkezine ayarla
   ObjectSetInteger(0,obj_name,OBJPROP_ANCHOR,ANCHOR_CENTER);
//--- son tikin fiyat ve zaman koordinatlarını, görüntü genişliği kadar sola kaydırılmış olarak grafiksel etiket nesnesine ayarla
   ObjectSetInteger(0,obj_name,OBJPROP_XDISTANCE,x-ExtResWidth);
   ObjectSetInteger(0,obj_name,OBJPROP_YDISTANCE,y);
//--- önceden bmp görüntüsü olarak kaydedilen kaynağı, grafiksel etiket nesnesi için bir görüntü dosyası olarak belirt
   ObjectSetString(0,obj_name,OBJPROP_BMPFILE,"\\Files\\ResourceSave\\"+ExtResName+".bmp");
//--- sembol grafiğini güncelle
   ChartRedraw();
   
//--- grafiksel etiket nesnesini silmeden önce üç saniye bekle
   Print("Wait 3 seconds before deleting the new graphic object");
   Sleep(3000);
   if(!ObjectDelete(0,obj_name))
      Print("ObjectDelete() failed. Error code: ",GetLastError());
  }
//+------------------------------------------------------------------+
//| 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();
  }
//+------------------------------------------------------------------+
//| Dikey bir çizgi çiz                                              |
//+------------------------------------------------------------------+
void LineVertical(int x,int y1,int y2,const uint clr)
  {
   int tmp;
//--- Y'ye göre sırala
   if(y1>y2)
     {
      tmp=y1;
      y1 =y2;
      y2 =tmp;
     }
//--- görüntü sınırlarının dışındaki çizgi
   if(y2<0 || y1>=ExtResHeight || x<0 || x>=ExtResWidth)
      return;
//--- görüntü sınırları içerisinde kal
   if(y1<0)
      y1=0;
   if(y2>=ExtResHeight)
      y2=ExtResHeight-1;
//--- çizgiyi çiz
   int index=y1*ExtResWidth+x;
   for(int i=y1i<=y2i++,index+=ExtResWidth)
      ExtResData[index]=clr;
  }
//+------------------------------------------------------------------+
//| Yatay bir çizgi çiz                                              |
//+------------------------------------------------------------------+
void LineHorizontal(int x1,int x2,int y,const uint clr)
  {
   int tmp;
//--- X'e göre sırala
   if(x1>x2)
     {
      tmp=x1;
      x1 =x2;
      x2 =tmp;
     }
//--- görüntü sınırlarının dışındaki çizgi
   if(x2<0 || x1>=ExtResWidth || y<0 || y>=ExtResHeight)
      return;
//--- görüntü sınırları içerisinde kal
   if(x1<0)
      x1=0;
   if(x2>=ExtResWidth)
      x2=ExtResWidth-1;
//--- çizgiyi çiz
   ArrayFill(ExtResData,y*ExtResWidth+x1,(x2-x1)+1,clr);
  }

Ayrıca Bakınız

Kaynaklar, ObjectCreate(), PlaySound(), ObjectSetString(), OBJPROP_BMPFILE