TextSetFont

Bu fonksiyon, çizim yöntemlerini kullanarak görüntülenen yazı tipini ayarlar ve işlemin sonucuna dönüş yapar. Varsayılan yazı tipi olarak, Arial -120 (12 pt) kullanılmaktadır.

bool  TextSetFont(
   const string  name,            // yazı tipinin ismi veya yazı tipi dosyasının disk üzerindeki konumu
   int           size,            // yazı tipi boyutu
   uint          flags,           // bayrakların kombinasyonu
   int           orientation=0    // metnin eğim açısı
   );

Parametreler

name

[in]  Sistemdeki yazı tipi ismi veya yazı tipini içeren kaynağın ismi veya yazı tipi dosyasının disk üzerindeki konumu.

size

[in]  Negatif veya pozitif sayılarla ayarlanabilir olan yazı tipi boyutu. Bir pozitif değerin kullanılması durumunda, görüntülenen metnin boyutu sistemde ayarlı yazı tipi boyutuna bağımlıdır. Bir negatif değerin kullanılması durumunda ise, değer on noktalık birimlerle ayarlanır ve metin boyutu işletim sistemi ayarlarına bağlıdır ("standart ölçek" veya "büyük ölçek"). Kullanılan modların farkları hakkında daha fazla bilgi alabilmek amacıyla aşağıdaki not kısmına bakınız.

bayraklar

[in]  Yazı tipi stilini belirleyen bayrakların kombinasyonu.

orientation

[in]  Metnin X eksenine göre eğimi - ölçü birimi 0.1 derecedir. Yani orientation=450 değeri, 45 derecelik eğim açısı anlamına gelir.

Dönüş değeri

Yazı tipi başarılı şekilde yüklenmişse 'true', aksi durumda ise 'false' dönüşü yapar. Muhtemel hata kodları:

  • ERR_INVALID_PARAMETER(4003) - name değişkeni, NULL veya "" (boş metin) ifade ediyor
  • ERR_INTERNAL_ERROR(4001) - işletim sistemi hatası (örneğin, olmayan bir yazı tipinin ayarlanmaya çalışılması).

Not

Yazı tipinin isminde "::" kullanılmışsa, yazı tipi EX5 kaynağından indirilir. Eğer yazı tipi ismi name bir uzantı ile belirtilmişse, yazı tipi ilgili dosyadan yüklenir; dosya adresi "\" veya "/" ile başlıyorsa, dosya MQL5 dizininde aranır. Aksi durumda, TextSetFont() fonksiyonunu çağıran EX5 dosyasının konumuna göre arama yapılır.

Yazı tipi boyutu pozitif veya negatif değerler ile ayarlanır. Bu, metin boyutunun işletim sistemi ayarlarına (boyut ölçeğine) olan bağımlılığını belirler.

  • Boyut, bir pozitif sayı ile belirlenmişse, mantıksal ölçü birimlerinden aygıtın fiziksel ölçü birimlerine (pikseller) dönüşüm gerçekleştirilir ve dönüşüm gerçekleştirildiği zaman bu boyut, mevcut yazı tiplerinden alınan sembol gliflerinin yüksekliğine karşılık gelir. Eğer TextOut() fonksiyonu ile görüntülenen metinler ve OBJ_LABEL ("Label") grafiksel nesnesi ile görüntülenen metinler çizelge üzerinde birlikte kullanılacaksa bu yöntem önerilmez.
  • Eğer boyut, bir negatif sayı ile belirlenmişse, bu sayının, onlu mantıksal noktalarla ayarlanmış olması beklenir; yani verilen sayı ona bölünür (-350 sayısı 35 mantıksal noktaya karşılık gelir). Alınan değer, mantıksal ölçü birimlerinden aygıtın fiziksel ölçü birimlerine (pikseller) dönüştürülür ve mevcut yazı tiplerinden alınan sembolün mutlak yüksek değerine karşılık gelir. Ekranda yer alan bir metnin boyutunu OBJ_LABEL nesnesindeki gibi ayarlamak için, nesne özelliklerinde belirtilen yazı tipi boyutunu -10 ile çarpın.

Bayraklar, stil bayrakları ve yazı tipi genişliğini belirleyen bir bayrakla birlikte kombinasyon şeklinde kullanılabilir. Bayrakların isimleri aşağıda gösterilmiştir.

Yazı tipi stilini belirleyen bayraklar

Bayrak

Açıklama

FONT_ITALIC

İtalik

FONT_UNDERLINE

Alt çizgi

FONT_STRIKEOUT

Üstü çizili

 

Yazı tipi genişliğini belirleyen bayraklar

Bayrak

FW_DONTCARE

FW_THIN

FW_EXTRALIGHT

FW_ULTRALIGHT

FW_LIGHT

FW_NORMAL

FW_REGULAR

FW_MEDIUM

FW_SEMIBOLD

FW_DEMIBOLD

FW_BOLD

FW_EXTRABOLD

FW_ULTRABOLD

FW_HEAVY

FW_BLACK

 

Örnek:

#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#define   COORD_X    200
#define   COORD_Y    100
#define   OBJ_NAME   "TestTextGetSizeBitmapLabel"
#define   RES_NAME   "TestTextGetSizeResource"
#define   COLOR_NULL 0x00FFFFFF
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- mevcut grafik kimliği
   long   chart_idChartID();
   
   string font_names[] ={"Arial""Tahoma""Calibri"};
   uint   flags_array[]={0FONT_ITALICFONT_UNDERLINEFONT_STRIKEOUT};
   uint   fw_array[]={FW_DONTCAREFW_THINFW_EXTRALIGHTFW_ULTRALIGHTFW_LIGHT,
                      FW_NORMALFW_REGULARFW_MEDIUMFW_SEMIBOLDFW_DEMIBOLD,
                      FW_BOLDFW_EXTRABOLDFW_ULTRABOLDFW_HEAVYFW_BLACK};
   
//--- fiyat grafiğinin herhangi bir özelliğinin çizilmesini devre dışı bırak
   ChartSetInteger(chart_idCHART_SHOWfalse);
   
//--- grafiksel kaynağın parametrelerini bildir
   uint rc_width =(int)ChartGetInteger(chart_idCHART_WIDTH_IN_PIXELS); 
   uint rc_height=(int)ChartGetInteger(chart_idCHART_HEIGHT_IN_PIXELS); 
   uint rc_data[]; 
   uint rc_size=rc_width*rc_height;
  
//--- metin çıktısı için bir grafiksel kaynak oluştur
   if(!CreateResource(chart_idrc_datarc_widthrc_height))
      return;
   
//--- yazı tipi adları arasında döngü
   for(int i=0i<(int)font_names.Size(); i++)
     {
      //--- yazı tipi bayrakları arasında döngü
      for(int j=0j<(int)flags_array.Size(); j++)
        {
         //--- diziden elde edilen yazı tipi ve stil bayrağı ile metin çiz
         DrawText(font_names[i], flags_array[j], rc_datarc_widthrc_height);
         Sleep(800);
         ArrayInitialize(rc_dataCOLOR_NULL);
        }
      Sleep(800);
      ArrayInitialize(rc_dataCOLOR_NULL);
     }
   
//--- tüm metinlerin çıktısını farklı yazı tipi boyutları ve stilleriyle yaptıktan sonra,
//--- farklı yazı tipi genişliği bayraklarıyla metin göster
   for(int i=0i<(int)fw_array.Size(); i++)
     {
      //--- genişlik bayrakları ile metin görüntülemek için yazı tipi boyutunu ve adını ayarla
      string font_name="Tahoma";
      int    size=-140;
      TextSetFont(font_namesizefw_array[i]);
      
      //--- çizilecek bir metin dizgesi oluştur, bunu kaynak piksel dizisine çıktı olarak ver ve kaynağı güncelle
      string text=StringFormat("Text%d: Font name: \"%s%s\", size: %d (%d)"i+1font_nameFlagWidthDescription(fw_array[i]), sizesize/-10);
      TextOut(textCOORD_XCOORD_YANCHOR_LEFT_UPPERrc_datarc_widthrc_heightColorToARGB(clrDodgerBlue), COLOR_FORMAT_ARGB_NORMALIZE);
      Update(RES_NAMErc_datarc_widthrc_heighttrue);
      //--- bir saniye bekle
      Sleep(1000);
      ArrayInitialize(rc_dataCOLOR_NULL);
     }
   
//--- beş saniye bekle, ardından kaynağı serbest bırak ve grafiksel nesneyi sil
   Sleep(5000);
   ResourceFree(RES_NAME);
   ObjectDelete(chart_idOBJ_NAME);
   
//--- fiyat grafiğinin herhangi bir özelliğinin çizilmesine izin verir
   ChartSetInteger(chart_idCHART_SHOWtrue);
   ChartRedraw(chart_id);
   /*
   Metin mesajları, komut dosyasının yürütülmesinin sonucu olarak grafikte görüntülenir.
   Metinler farklı yazı tiplerinin yanı sıra stil ve genişlik bayraklarına sahiptir.
   */ 
  }
//+------------------------------------------------------------------+
//| Belirtilen yazı tipi ve bayraklarla                              |
//| farklı boyutlarda beş metin dizgesi görüntüle                    |
//+------------------------------------------------------------------+
void DrawText(const string font_nameuint flagsuint &pixels_array[], uint res_widthuint res_height)
  {
//--- farklı yazı tipi boyutlarına sahip beş metin dizgesi çıktıla
   for(int i=0i<5i++)
     {
      //--- yazı tipi boyutunu hesapla ve çizim yöntemlerini kullanarak metin çıktısı için yazı tipini ayarla
      int size=-140+10*i;
      TextSetFont(font_namesizeflags);
      
      //--- çizilecek bir metin dizgesi oluştur, bunu kaynak piksel dizisine çıktı olarak ver ve kaynağı güncelle
      string text=StringFormat("Text%d: Font name: \"%s%s\", size: %d (%d)"i+1font_nameFlagDescription(flags), sizesize/-10);
      TextOut(textCOORD_XCOORD_Y+22*iANCHOR_LEFT_UPPERpixels_arrayres_widthres_heightColorToARGB(clrDodgerBlue), COLOR_FORMAT_ARGB_NORMALIZE);
      Update(RES_NAMEpixels_arrayres_widthres_heighttrue);
      //--- biraz bekle
      Sleep(800);
     }
  }
//+------------------------------------------------------------------+
//| Yazı tipi stili bayraklarının açıklamasını geri döndür           |
//+------------------------------------------------------------------+
string FlagDescription(const uint flag)
  {
   switch(flag)
     {
      case FONT_ITALIC     :  return(" Italic");
      case FONT_UNDERLINE  :  return(" Underline");
      case FONT_STRIKEOUT  :  return(" Strikeout");
     }
   return("");
  }
//+------------------------------------------------------------------+
//| Yazı tipi genişliği bayraklarının açıklamasını geri döndür       |
//+------------------------------------------------------------------+
string FlagWidthDescription(const uint flag)
  {
   switch(flag)
     {
      case FW_DONTCARE  :  return(" Dontcare");
      case FW_THIN      :  return(" Thin");
      case FW_EXTRALIGHT:  return(" Extralight");
      case FW_ULTRALIGHT:  return(" Ultralight");
      case FW_LIGHT     :  return(" Light");
      case FW_NORMAL    :  return(" Normal");
      case FW_REGULAR   :  return(" Regular");
      case FW_MEDIUM    :  return(" Medium");
      case FW_SEMIBOLD  :  return(" Semibold");
      case FW_DEMIBOLD  :  return(" Demibold");
      case FW_BOLD      :  return(" Bold");
      case FW_EXTRABOLD :  return(" Extrabold");
      case FW_ULTRABOLD :  return(" Ultrabold");
      case FW_HEAVY     :  return(" Heavy");
      case FW_BLACK     :  return(" Black");
     }
   return("");
  }
//+------------------------------------------------------------------+
//| Grafiğin tamamı için bir grafiksel kaynak oluştur                |
//+------------------------------------------------------------------+
bool CreateResource(const long chart_iduint &pixel_data[], const uint widthconst uint height)
  {
//--- piksel dizisinin büyüklüğünü ayarla
   ResetLastError(); 
   uint size=width*height;
   if(ArrayResize(pixel_datasize)!=size
     { 
      PrintFormat("%s: ArrayResize() failed. Error code %d",__FUNCTION__GetLastError()); 
      return(false); 
     } 
//--- piksel dizisini saydam renkle doldur ve buna dayalı bir grafiksel kaynak oluştur
   ArrayInitialize(pixel_dataCOLOR_NULL); 
   if(!ResourceCreate(RES_NAMEpixel_datawidthheight000COLOR_FORMAT_ARGB_NORMALIZE)) 
     { 
      PrintFormat("%s: ResourceCreate() failed. Error code ",__FUNCTION__GetLastError()); 
      return(false); 
     } 
  
//--- grafiğin sol üst köşesinin koordinatlarında bir "bitmap etiket" nesnesi oluştur
   if(!ObjectCreate(0OBJ_NAMEOBJ_BITMAP_LABEL000)) 
     { 
      PrintFormat("%s: ObjectCreate() failed. Error code %d",__FUNCTION__GetLastError()); 
      return(false); 
     } 
//--- 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.
   if(!ObjectSetInteger(chart_idOBJ_NAMEOBJPROP_XSIZEwidth))
     {
      PrintFormat("%s: ObjectSetInteger() failed. Error code %d",__FUNCTION__GetLastError()); 
      return(false); 
     }
   if(!ObjectSetInteger(chart_idOBJ_NAMEOBJPROP_YSIZEheight))
     {
      PrintFormat("%s: ObjectSetInteger() failed. Error code %d",__FUNCTION__GetLastError()); 
      return(false); 
     }
//--- bitmap nesnesi için önceden oluşturulmuş grafiksel kaynağı 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
   if(!ObjectSetString(chart_idOBJ_NAMEOBJPROP_BMPFILE"::"+RES_NAME))
     {
      PrintFormat("%s: ObjectSetString() failed. Error code %d",__FUNCTION__GetLastError()); 
      return(false); 
     }
    
//--- her şey yolunda
   return(true);
  }
//+------------------------------------------------------------------+ 
//| Grafiksel kaynak verilerini güncelle                             |
//+------------------------------------------------------------------+ 
void Update(const string res_nameconst uint &pixel_data[], const uint widthconst uint heightconst bool redraw
  { 
//--- sıfır boyut iletilirse ayrıl
   if(width==0 || height==0
      return
//--- kaynak verilerini güncelle ve grafiği yeniden çiz
   if(ResourceCreate(res_namepixel_datawidthheight000COLOR_FORMAT_ARGB_NORMALIZE) && redraw
      ChartRedraw(); 
  } 

Ayrıca Bakınız

Kaynaklar, ResourceCreate(), ResourceSave(), TextOut()