OBJ_BITMAP_LABEL

Bitmap Etiketi nesnesi.

ObjBitmapLabel

Not

İşarete göre tutturma noktası (çapa) konumu ENUM_ARROW_ANCHOR sayımından seçilebilir. Tutturma noktası koordinatları piksel bazında ayarlanır.

Bitmap tutturma köşesini de ayrıca ENUM_BASE_CORNER sayımından seçebilirsiniz.

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

Ö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 \"Bitmap Etiketi\" nesnesini 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            InpName="BmpLabel";               // Etiket ismi
input string            InpFileOn="\\Images\\dollar.bmp"// "On" modu için dosya ismi
input string            InpFileOff="\\Images\\euro.bmp";  // "Off" modu için dosya ismi
input bool              InpState=false;                   // Etiket basılı/serbest
input ENUM_BASE_CORNER  InpCorner=CORNER_LEFT_UPPER;      // Tutturma (çapa) yapılacak çizelge köşesi
input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_CENTER;          // Çapa tipi
input color             InpColor=clrRed;                  // Vurgulandığında, kenar çizgisinin rengi
input ENUM_LINE_STYLE   InpStyle=STYLE_SOLID;             // Vurgulandığında çizgi stili
input int               InpPointWidth=1;                  // Taşıma için nokta boyutu
input bool              InpBack=false;                    // Arka-plan nesnesi
input bool              InpSelection=false;               // Taşımak için vurgula
input bool              InpHidden=true;                   // Nesne listesinde gizle 
input long              InpZOrder=0;                      // Fare tıklaması için öncelik
//+------------------------------------------------------------------+
//| Bitmap nesnesini oluştur                                         |
//+------------------------------------------------------------------+
bool BitmapLabelCreate(const long              chart_ID=0,               // çizelge kimliği
                       const string            name="BmpLabel",          // etiket ismi
                       const int               sub_window=0,             // alt-pencere indisi
                       const int               x=0,                      // X koordinatı
                       const int               y=0,                      // Y koordinatı
                       const string            file_on="",               // "On" modunda resim
                       const string            file_off="",              // "Off" modunda resim
                       const int               width=0,                  // X koordinatının görünürlük alanı
                       const int               height=0,                 // Y koordinatının görünürlük alanı
                       const int               x_offset=10,              // X ekseninde görünürlük alanı kayması
                       const int               y_offset=10,              // Y ekseninde görünürlük alanı kayması
                       const bool              state=false,              // basılı/serbest
                       const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// tutturma için çizelge köşesi
                       const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER// çapa tipi 
                       const color             clr=clrRed,               // kenar çizgisi rengi (vurgulandığında)
                       const ENUM_LINE_STYLE   style=STYLE_SOLID,        // kenar çizgisi stili (vurgulandığında)
                       const int               point_width=1,            // taşıma noktası boyutu
                       const bool              back=false,               // arkaplanda
                       const bool              selection=false,          // taşıma için vurgula
                       const bool              hidden=true,              // nesne listesinde gizle
                       const long              z_order=0)                // fare tıklaması önceliği
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- bir bitmap etiketi oluştur
   if(!ObjectCreate(chart_ID,name,OBJ_BITMAP_LABEL,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": \"Bitmap Etiketi\" nesnesi oluşturulması başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
//--- On ve Off modları için görüntüleri ayarla
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,0,file_on))
     {
      Print(__FUNCTION__,
            ": "On" modu için resim yüklenemedi! Hata kodu = ",GetLastError());
      return(false);
     }
   if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,1,file_off))
     {
      Print(__FUNCTION__,
            ": "Off" modu için resim yüklenemedi! Hata kodu = ",GetLastError());
      return(false);
     }
//--- etiket koordinatlarını ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- 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);
//--- etiket durumunu tanımla (basılı veya serbest)
   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);
//--- tanımlanan nokta koordinatlarına göre çapa (tutturma) köşesini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- tutturma noktası tipini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- 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 etiket nesnesi için yeni bir resim oluştur                |
//+------------------------------------------------------------------+
bool BitmapLabelSetImage(const long   chart_ID=0,      // çizelge kimliği
                         const string name="BmpLabel"// etiket ismi
                         const int    on_off=0,        // şekillendirici (On veya Off)
                         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,on_off,file))
     {
      Print(__FUNCTION__,
            ": resmin yüklenmesi başarısız oldu! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Bitmap Etiket nesnesini taşı                                     |
//+------------------------------------------------------------------+
bool BitmapLabelMove(const long   chart_ID=0,      // çizelge kimliği
                     const string name="BmpLabel"// etiket ismi
                     const int    x=0,             // X koordinatı
                     const int    y=0)             // Y koordinatı
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- nesneyi taşı
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": nesnenin X koordinatını taşıma başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": nesnenin Y koordinatını taşıma başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Nesnenin görünürlük alanını değiştir                             |
//+------------------------------------------------------------------+
bool BitmapLabelChangeSize(const long   chart_ID=0,      // çizelge kimliği
                           const string name="BmpLabel"// etiket ismi
                           const int    width=0,         // etiket genişliği
                           const int    height=0)        // etiket yüksekliği
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- nesne boyutunu değiştir
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": nesne genişliğinin değiştirilmesi başarısız oldu! Hata kodu = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": nesne yüksekliğinin değiştirilmesi başarısız oldu! 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 BitmapLabelMoveVisibleArea(const long   chart_ID=0,      // çizelge tanımlayıcısı
                                const string name="BmpLabel"// etiket ismi
                                const int    x_offset=0,      // görünürlük alanı X koordinatı
                                const int    y_offset=0)      // görünürlük alanı Y koordinatı
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- nesnenin görünürlük alanı 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 Etiket" nesnesini sil                                    |
//+------------------------------------------------------------------+
bool BitmapLabelDelete(const long   chart_ID=0,      // çizelge kimliği
                       const string name="BmpLabel"// etiket ismi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- etiketi sil
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": \"Bitmap etiket\" nesnesinin silinmesi başarısız oldu! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- çizelge penceresi büyüklüğü
   long x_distance;
   long y_distance;
//--- pencere büyüklüğünü ayarla
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("Çizelgenin genişlik değeri alınamadı! Hata kodu = ",GetLastError());
      return;
     }
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("Çizelgenin yükseklik değeri alınamadı! Hata kodu = ",GetLastError());
      return;
     }
//--- bitmap etiketinin koordinatlarını belirle
   int x=(int)x_distance/2;
   int y=(int)y_distance/2;
//--- etiket büyüklüğünü ve görünürlük alanı koordinatlarını ayarla
   int width=32;
   int height=32;
   int x_offset=0;
   int y_offset=0;
//--- bitmap etiketini pencerenin ortasına yerleştir
   if(!BitmapLabelCreate(0,InpName,0,x,y,InpFileOn,InpFileOff,width,height,x_offset,y_offset,InpState,
      InpCorner,InpAnchor,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- çizelgeyi yenile ve bir saniye bekle
   ChartRedraw();
   Sleep(1000);
//--- etiketin görünürlük alanı boyutunu, döngü içinde değiştir
   for(int i=0;i<6;i++)
     {
      //--- görünürlük alanı boyutunu değiştir
      width--;
      height--;
      if(!BitmapLabelChangeSize(0,InpName,width,height))
         return;
      //--- script işlemi devre dışı bırakıldı mı kontrol et
      if(IsStopped())
         return;
      //--- çizelgeyi yenile
      ChartRedraw();
      // 0.3 saniyelik gecikme
      Sleep(300);
     }
//--- 1 saniyelik gecikme
   Sleep(1000);
//--- etiketin görünürlük alanı koordinatlarını, döngü içinde değiştir
   for(int i=0;i<2;i++)
     {
      //--- etiketin görünürlük alanı koordinatlarını değiştir
      x_offset++;
      y_offset++;
      if(!BitmapLabelMoveVisibleArea(0,InpName,x_offset,y_offset))
         return;
      //--- script işlemi devre dışı bırakıldı mı kontrol et
      if(IsStopped())
         return;
      //--- çizelgeyi yenile
      ChartRedraw();
      // 0.3 saniyelik gecikme
      Sleep(300);
     }
//--- 1 saniyelik gecikme
   Sleep(1000);
//--- etiketi sil
   BitmapLabelDelete(0,InpName);
   ChartRedraw();
//--- 1 saniyelik gecikme
   Sleep(1000);
//---
  }