//+------------------------------------------------------------------+
//| 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);
//--- grafiksel kaynak verisini okumadan önce üç saniye bekle
Print("Wait 3 seconds before ResourceReadImage()");
Sleep(3000);
//--- kaynaktaki görüntüyü yeni bir piksel dizisine oku
uint rc_data_copy[];
uint w=0,h=0;
ResetLastError();
if(!ResourceReadImage("::"+rc_name,rc_data_copy,w,h))
{
Print("ResourceReadImage() failed. Error code: ",GetLastError());
return;
}
//--- OrangeRed rengini 200 şeffaflık ile ayarla
clr=ColorToARGB(clrOrangeRed,200);
//--- grafiksel kaynağın tüm piksel dizisini ayarlanan renkle doldur ve buna dayalı yeni bir grafiksel kaynak oluştur
ArrayInitialize(rc_data_copy,clr);
if(!ResourceCreate(rc_name+"Copy",rc_data_copy,rc_width,rc_height,0,0,0,COLOR_FORMAT_ARGB_NORMALIZE))
{
Print("New ResourceCreate() failed. Error code: ",GetLastError());
return;
}
Print("Size of created new recource array: ",rc_data_copy.Size());
//--- son tik fiyatının ve zamanının koordinatlarını kullanarak bir grafiksel etiket nesnesi oluştur
string obj_name2="BitmapLabel";
if(!ObjectCreate(0,obj_name2,OBJ_BITMAP_LABEL,0,0,0))
{
Print("ObjectCreate() failed. Error code: ",GetLastError());
return;
}
//--- önceden alınan fiyat ve zamanı kullanarak ekran koordinatlarını al
int x=0,y=0;
if(!ChartTimePriceToXY(0,0,tick.time,tick.bid,x,y))
{
Print("New ChartTimePriceToXY() failed. Error code: ",GetLastError());
return;
}
//--- oluşturulan grafiksel etiket 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_name2,OBJPROP_XSIZE,rc_width);
ObjectSetInteger(0,obj_name2,OBJPROP_YSIZE,rc_height);
ObjectSetInteger(0,obj_name2,OBJPROP_ANCHOR,ANCHOR_LEFT_UPPER);
ObjectSetInteger(0,obj_name2,OBJPROP_XDISTANCE,x);
ObjectSetInteger(0,obj_name2,OBJPROP_YDISTANCE,y);
//--- kopyalanan grafiksel kaynağı grafiksel etiket nesnesi için bir görüntü dosyası olarak ayarla
//--- bu durumda, kullanılan grafiksel kaynağın adını belirtmek için adının önüne "::" eklememiz gerekir
ObjectSetString(0,obj_name2,OBJPROP_BMPFILE,"::"+rc_name+"Copy");
//--- yeni grafiksel etiket nesnesinin rengini değiştir
Print("Wait 3 seconds before changing color to GreenYellow");
Sleep(3000);
//--- GreenYellow rengini 200 şeffaflık ile ayarla
clr=ColorToARGB(clrGreenYellow,200);
//--- yeni grafiksel kaynağın tüm piksel dizisini ayarlanan renkle doldur
ArrayInitialize(rc_data_copy,clr);
//--- grafiksel kaynak verisini güncelle
Update(rc_name+"Copy",rc_data_copy,rc_width,rc_height,true);
//--- üç saniye bekle ve kaynakları ve her iki nesneyi sil
Print("Wait 3 seconds before deleting both objects");
Sleep(3000);
Print("Deleting Resource and all Bitmap objects");
ResourceFree("::"+rc_name);
ResourceFree("::"+rc_name+"Copy");
ObjectDelete(0,obj_name);
ObjectDelete(0,obj_name2);
}
//+------------------------------------------------------------------+
//| 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();
}
|