OBJ_BITMAP

Bitmap nesnesi.

ObjBitmap

Not

Bitmap nesnesi için, bir resmin görünürlük alanını seçebilirsin.

Örnek

Aşağıdaki script, çizelge üzerinde çeşitli bitmap'ler oluşturur. Grafiksel nesne özelliklerini oluşturmak ve değiştirmek için özel fonksiyonlar geliştirilmiştir. Bu fonksiyonları kendi uygulamalarınızda da "aynı şekilde" kullanabilirsiniz.

 

//--- açıklama
#property description "Script, çizelge penceresi içinde bir bitmap nesnesi oluşturur."
//--- betiğin çalıştırılması sırasında giriş parametreleri penceresini göster
#property script_show_inputs
//--- betiğin giriş parametreleri
input string          InpFile="\\Images\\dollar.bmp"// Bitmap dosyası ismi
input int             InpWidth=24;                    // Görünürlük alanının X koordinatı
input int             InpHeight=24;                   // Görünürlük alanının X koordinatı
input int             InpXOffset=4;                   // Görünürlük alanının X eksenine göre kaydırılması
input int             InpYOffset=4;                   // Görünürlük alanının Y eksenine göre kaydırılması
input color           InpColor=clrRed;                // Kenar çizgisi rengi (vurgulandığında)
input ENUM_LINE_STYLE InpStyle=STYLE_SOLID;           // Çizgi stili (vurgulandığında)
input int             InpPointWidth=1;                // Taşıma noktası büyüklüğü
input bool            InpBack=false;                  // Arkaplan nesnesi
input bool            InpSelection=false;             // Taşıma için vurgula
input bool            InpHidden=true;                 // Nesne listesinde gizle
input long            InpZOrder=0;                    // Fare tıklaması için öncelik
//+------------------------------------------------------------------+
//| Çizelge penceresinde bir bitmap nesnesi oluşturur                  |
//+------------------------------------------------------------------+
bool BitmapCreate(const long            chart_ID=0,        // çizelge kimliği
                  const string          name="Bitmap",     // bitmap ismi
                  const int             sub_window=0,      // alt-pencere indisi
                  datetime              time=0,            // tutturma noktası zamanı
                  double                price=0,           // çapa noktası fiyatı
                  const string          file="",           // bitmap dosya adı
                  const int             width=10,          // görünürlük alanının X koordinatı
                  const int             height=10,         // görünürlük alanının Y koordinatı
                  const int             x_offset=0,        // görünürlük alanının X eksenine göre kaydırılması
                  const int             y_offset=0,        // görünürlük alanının Y eksenine göre kaydırılması
                  const color           clr=clrRed,        // vurgulandığında kenar çizgisi rengi
                  const ENUM_LINE_STYLE style=STYLE_SOLID// vurgulandığında çizgi rengi
                  const int             point_width=1,     // taşıma noktasının boyutu
                  const bool            back=false,        // arka-planda
                  const bool            selection=false,   // taşıma için vurgula
                  const bool            hidden=true,       // nesne listesinde gizle
                  const long            z_order=0)         // fare tıklama önceliği
  {
//--- ayarlanmamışsa, tutturma noktası koordinatlarını ayarla
   ChangeBitmapEmptyPoint(time,price);
//--- hata değerini sıfırla
   ResetLastError();
//--- bir bitmap nesnesi oluştur
   if(!ObjectCreate(chart_ID,name,OBJ_BITMAP,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": çizelge penceresinde bir bitmap nesnesi oluşturulamadı! Hata kodu = ",GetLastError());
      return(false);
     }
//--- resim dosyasının adresini ayarla
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,file))
     {
      Print(__FUNCTION__,
            ": resmin yüklenmesi başarısız oldu! Hata kodu = ",GetLastError());
      return(false);
     }
//--- resmin görünürlük alanını ayarla; eğer yükseklik ve genişlik değerleri
//--- sırasıyla kaynak resmin genişlik ve yüksekliğini geçerse
//--- etiket çizilmez; aksi durumda ise,
//--- sadece bu değerler karşılık gelen kısım çizilir
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- resmin görünürlük alanında görüntülenecek kısmını ayarla
//--- öntanımlı kısım resmin sol üst alanıdır; değerler,
//--- resmin başka bir kısmının gösterilmesi için bir kaydırma gerçekleştirir
   ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset);
   ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset);
//--- nesne vurgulama modu etkinken kenar çizgisi rengini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- nesne vurgulama modu etkinken kenar çizgisinin stilini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- nesne taşıma için tutturma noktası boyutunu ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- ön-planda (false) veya arkaplanda (true) göster
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- etiketi fare ile taşıma modunu etkinleştir (true) veya devre dışı bırak (false)
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- nesne listesinde grafiksel nesnenin adını sakla (true) veya göster (false)
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- çizelge üzerinde fare tıklaması olayının alınması için özellik ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Bitmap nesnesi için yeni bir resim ayarla                        |
//+------------------------------------------------------------------+
bool BitmapSetImage(const long   chart_ID=0,    // çizelge kimliği
                    const string name="Bitmap"// bitmap ismi
                    const string file="")       // dosya adresi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- resim dosyasının adresini ayarla
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,file))
     {
      Print(__FUNCTION__,
            ": resmin yüklenmesi başarısız oldu! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Bir bitmap nesnesini çizelge üzerinde taşı                       |
//+------------------------------------------------------------------+
bool BitmapMove(const long   chart_ID=0,    // çizelge kimliği
                const string name="Bitmap"// bitmap ismi
                datetime     time=0,        // tutturma noktası zamanı
                double       price=0)       // tutturma noktası fiyatı
  {
//--- noktanın pozisyonu belirlenmemişse, noktayı Bid (alış) fiyatı olan mevcut çubuğa taşı
   if(!time)
      time=TimeCurrent();
   if(!price)
      price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- hata değerini sıfırla
   ResetLastError();
//--- tutturma noktasını taşı
   if(!ObjectMove(chart_ID,name,0,time,price))
     {
      Print(__FUNCTION__,
            ": tutturma noktasının taşınması başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Nesnenin (bitmap) görünürlük alanı boyutunu değiştir             |
//+------------------------------------------------------------------+
bool BitmapChangeSize(const long   chart_ID=0,    // çizelge kimliği
                      const string name="Bitmap"// bitmap ismi
                      const int    width=0,       // bitmap genişliği
                      const int    height=0)      // bitmap yüksekliği
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- bitmap büyüklüğünü değiştir
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": bitmap genişliğinin değiştirilmesi başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": bitmap yüksekliğinin değiştirilmesi başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+--------------------------------------------------------------------+
//| Görünürlük alanının üst sağ köşesinin koordinatlarını değiştir     |
//+--------------------------------------------------------------------+
bool BitmapMoveVisibleArea(const long   chart_ID=0,    // çizelge tanımlayıcısı
                           const string name="Bitmap"// bitmap ismi
                           const int    x_offset=0,    // görünürlük alanının X koordinatı
                           const int    y_offset=0)    // görünürlük alanının Y koordinatı
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- bitmap nesnesinin görünürlük alanının koordinatlarını değiştir
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset))
     {
      Print(__FUNCTION__,
            ": görünürlük alanının X koordinatının değiştirilmesi başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset))
     {
      Print(__FUNCTION__,
            ": görünürlük alanının X koordinatının değiştirilmesi başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Bitmap nesnesini sil                                             |
//+------------------------------------------------------------------+
bool BitmapDelete(const long   chart_ID=0,    // çizelge tanımlayıcısı
                  const string name="Bitmap"// bitmap ismi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- etiketi sil
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": bitmap nesnesi silinemedi! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Tutturma noktası değerlerini kontrol et ve                       |
//| boş olanlar için varsayılan değerleri ayarla                     |
//+------------------------------------------------------------------+
void ChangeBitmapEmptyPoint(datetime &time,double &price)
  {
//--- noktanın zamanı ayarlanmamışsa, mevcut çubuk üzerinde olacak
   if(!time)
      time=TimeCurrent();
//--- noktanın fiyatı ayarlanmamışsa, Bid değerini alacak
   if(!price)
      price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime date[];  // görünür çubukların tarihlerini depolayan bir dizi
   double   close[]; // kapanış (Close) fiyatlarının depolanması için bir dizi
//--- bitmap dosyasının adı
   string   file="\\Images\\dollar.bmp";
//--- çizelge penceresindeki görünür çubukların sayısı
   int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- bellek tahsisi
   ArrayResize(date,bars);
   ArrayResize(close,bars);
//--- tarih dizisini doldur
   ResetLastError();
   if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
     {
      Print("Zaman değerlerinin kopyalanması başarısız oldu! Hata kodu = ",GetLastError());
      return;
     }
//--- kapanış (Close) fiyatları dizisini doldur
   if(CopyClose(Symbol(),Period(),0,bars,close)==-1)
     {
      Print("Kapanış fiyatı değerleri kopyalanamadı! Hata kodu = ",GetLastError());
      return;
     }
//--- resmin ne sıklıkta görüntüleneceğini tanımla
   int scale=(int)ChartGetInteger(0,CHART_SCALE);
//--- adım değerini taımla
   int step=1;
   switch(scale)
     {
      case 0:
         step=27;
         break;
      case 1:
         step=14;
         break;
      case 2:
         step=7;
         break;
      case 3:
         step=4;
         break;
      case 4:
         step=2;
         break;
     }
//--- High ve Low (yüksek ve düşük) çubukların değerleri için (boşluklu olarak) bitmap'ler oluştur
   for(int i=0;i<bars;i+=step)
     {
      //--- bitmap'leri oluştur
      if(!BitmapCreate(0,"Bitmap_"+(string)i,0,date[i],close[i],InpFile,InpWidth,InpHeight,InpXOffset,
         InpYOffset,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder))
        {
         return;
        }
      //--- script işlemi devre dışı bırakıldı mı kontrol et
      if(IsStopped())
         return;
      //--- çizelgeyi yenile
      ChartRedraw();
      // 0.05 saniyelik gecikme
      Sleep(50);
     }
//--- yarım saniyelik gecikme
   Sleep(500);
//--- satış işaretlerini sil
   for(int i=0;i<bars;i+=step)
     {
      if(!BitmapDelete(0,"Bitmap_"+(string)i))
         return;
      if(!BitmapDelete(0,"Bitmap_"+(string)i))
         return;
      //--- çizelgeyi yenile
      ChartRedraw();
      // 0.05 saniyelik gecikme
      Sleep(50);
     }
//---
  }