TextOut

Bir metni özel bir dizi (tampon) içerisinde görüntüler ve işlemin sonucuna dönüş yapar. Söz konusu dizi, grafiksel kaynak oluşturma amacıyla tasarlanır.

bool  TextOut(
   const string       text,          // görüntülenen metin
   int                x,             // X koordinatı 
   int                y,             // Y koordinatı 
   uint               anchor,        // tutturma (çapa) tipi
   uint               &data[],       // çıktı tamponu
   uint               width,         // piksel bazında tampon genişliği
   uint               height,        // piksel bazında tampon yüksekliği
   uint               color,         // metin rengi
   ENUM_COLOR_FORMAT  color_format   // çıktı için renk biçimi
   );

Parametreler

text

[in]  Tampona yazılıp görüntülenecek metin. Sadece tek satırlık metin görüntülenir.

x

[in]  Görüntülenecek metnin tutturma noktasının X koordinatı.

y

[in]  Görüntülenecek metnin tutturma noktasının Y koordinatı.

anchor

[in]  Görüntülenecek metnin tutturma noktası için 9 ön-tanımlı yöntemden birinin değeri. Bu değer, iki bayraklı bir kombinasyon ile belirlenir – yatay ve dikey metin hizalama bayrakları. Söz konusu bayraklar, Not kısmında aşağıda listelenmiştir.

data[]

[in]  Metnin görüntüleneceği tampon. Bu tampon, grafiksel kaynak oluşturma amacıyla kullanılır.

genişlik

[in]  Piksel bazında tampon genişliği.

height

[in]  Piksel bazında tampon yüksekliği.

color

[in]  Metin rengi.

color_format

[in]  Renk değeri, ENUM_COLOR_FORMAT sayımı değerleri ile ayarlanır.

Dönüş değeri

Başarılı ise 'true' değerine, aksi durumda 'false' değerine dönüş yapar.

Not

tutturma noktası (çapa) koordinatları, yatay ve dikey metin hizalama bayraklarından oluşan ikili bir kombinasyon ile belirlenir. Yatay metin hizalama bayrakları:

  • TA_LEFT – karakter kutusunun sol tarafına yerleştirilen tutturma noktası
  • TA_CENTER – karakter kutusunun ortasına yerleştirilen tutturma noktası
  • TA_RIGHT – karakter kutusunun sağ tarafına yerleştirilen tutturma noktası

Dikey metin hizalama bayrakları:

  • TA_TOP – karakter kutusunun üst tarafına yerleştirilen tutturma noktası
  • TA_VCENTER – karakter kutusunun ortasına yerleştirilen tutturma noktası
  • TA_BOTTOM – karakter kutusunun alt tarafına yerleştirilen tutturma noktası

 

Muhtemel bayrak kombinasyonları ve seçilen tutturma noktaları resimde gösterilmektedir.
 

Bir netin dizgisinin bağlanmasının 9 muhtemel yolu

Örnek:

//--- çizimde kullanılacak tuvalin yükseklik ve genişliği
#define IMG_WIDTH  200
#define IMG_HEIGHT 200
//--- betiği çalıştırmadan önce parametreler penceresini göster
#property script_show_inputs
//--- renk biçimi ayarlama modunu etkinleştir
input ENUM_COLOR_FORMAT clr_format=COLOR_FORMAT_XRGB_NOALPHA;
//--- tamponun çizimi
uint ExtImg[IMG_WIDTH*IMG_HEIGHT];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- çizim için OBJ_BITMAP_LABEL nesnesini oluştur    
   ObjectCreate(0,"CLOCK",OBJ_BITMAP_LABEL,0,0,0);
//--- CLOCK nesnesinin yazımında kullanılacak grafiksel kaynağın ismini belirle
   ObjectSetString(0,"CLOCK",OBJPROP_BMPFILE,"::IMG");
 
//--- ek değişkenler
   double a;            // ok köşesi
   uint   nm=2700;      // dakika köşesi
   uint   nh=2700*12;   // saat sayacı
   uint   w,h;          // metin boyutunu almak için bir değişken 
   int    x,y;          // mevcut metin koordinatlarının hesaplanması için değişkenler
 
//--- script sonlana kadar, sonsuz bir döngü kullanarak saat ibrelerini çevir
   while(!IsStopped())
     {
      //--- saat çizim tamponunun dizisini temizle
      ArrayFill(ExtImg,0,IMG_WIDTH*IMG_HEIGHT,0);
      //--- saat kadranına rakamlarını çizmek için yazı tipini ayarla
      TextSetFont("Arial",-200,FW_EXTRABOLD,0);
      //--- saat kadranını çiz
      for(int i=1;i<=12;i++)
        {
         //--- akrebin kadrandaki mevcut boyutunu al
         TextGetSize(string(i),w,h);
         //--- akrebin kadran üzerindeki mevcut koordinatlarını hesapla
         a=-((i*300)%3600*M_PI)/1800.0;
         x=IMG_WIDTH/2-int(sin(a)*80+0.5+w/2);
         y=IMG_HEIGHT/2-int(cos(a)*80+0.5+h/2);
         //--- akrebi (saati) ExtImg[] tamponuna çıktıla
         TextOut(string(i),x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
        }
      //--- şimdi dakika ibresi (yelkovan) çizmek için bir yazı tipi belirle
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nm%3600));
      //--- yelkovan boyutunu al
      TextGetSize("----->",w,h);
      //--- yelkovanın kadran üzerindeki konumunu al
      a=-(nm%3600*M_PI)/1800.0;
      x=IMG_WIDTH/2-int(sin(a)*h/2+0.5);
      y=IMG_HEIGHT/2-int(cos(a)*h/2+0.5);
      //--- yelkovanı (dakikayı) ExtImg[] tamponuna çıktıla
      TextOut("----->",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //--- şimdi, yelkovanı çizmek için yazı tipi ayarla
      TextSetFont("Arial",-200,FW_EXTRABOLD,-int(nh/12%3600));
      TextGetSize("==>",w,h);
      //--- akrebin kadran üzerindeki koordinatlarını hesapla
      a=-(nh/12%3600*M_PI)/1800.0;
      x=IMG_WIDTH/2-int(sin(a)*h/2+0.5);
      y=IMG_HEIGHT/2-int(cos(a)*h/2+0.5);
      //--- akrebi (saati) ExtImg[] tamponuna çıktıla
      TextOut("==>",x,y,TA_LEFT|TA_TOP,ExtImg,IMG_WIDTH,IMG_HEIGHT,0xFFFFFFFF,clr_format);
 
      //--- grafiksel kaynağı güncelle
      ResourceCreate("::IMG",ExtImg,IMG_WIDTH,IMG_HEIGHT,0,0,IMG_WIDTH,clr_format);
      //--- çizelgeyi zorla güncelle
      ChartRedraw();
 
      //--- dakika ve saat sayaçlarını artır
      nm+=60;
      nh+=60;
      //--- sayacın artırılması için kısa bir duraklama
      Sleep(10);
     }
//--- script işlemi tamamlandığında CLOCK nesnesini sil
   ObjectDelete(0,"CLOCK");
//---
  }

Ayrıca Bakınız

Kaynaklar, ResourceCreate(), ResourceSave(), TextGetSize(), TextSetFont()