ColorToARGB

Fonksiyon, rengin ARGB temsilini elde etmek için, color tipini uint tipine dönüştürür. ARGB renk biçimi, bir grafiksel kaynak, metin çıktısı ve CCanvas standart kütüphane sınıfını oluşturmak için kullanılır.

uint  ColorToARGB(
   color  clr,          // color tipi rengi dönüştürmek için
   uchar  alpha=255     // renk saydamlığını ayarlayan alfa kanalı
   );

Parametreler

clr

[in]  color tipi değişkendeki renk değeri.

alpha

[in]  Rengi ARGB biçiminde almak için gerekli olan alfa kanalı. Bu değer, 0 ile (ön plandaki bir pikselin rengi, arka plandakini değiştirmez) 255 (arka plandaki bir pikselin rengi, tamamen üsttekinin rengini alır) arasında ayarlanabilir. Yüzdelik terimlerle renk saydamlığı şu şekilde hesaplanır (1-alpha/255)*100%. Yani alfa kanalının değeri ne kadar düşükse, rengin saydamlığı da o kadar yüksek olur.

Dönüş değeri

Rengi ARGB biçiminde sunar, burada Alfa, Red, Green, Blue (alfa kanalı, kırmızı, yeşil, mavi) değerleri, dört adet uint tipi bir-baytlık seride ayarlanır.

Not

RGB, bilgisayar grafiklerinde piksel rengini tanımlamak için yaygın olarak kullanılan bir biçimdir. Temel renklerin isimleri; kırmızı (red), yeşil (green) ve mavi (blue) renk bileşenlerini ayarlamak için kullanılır. Her bir bileşen, rengin canlılığını 0 ile 255 arası (onaltılık biçimde 0x00 ile 0XFF arası) değerlerle gösteren bir bayt ile tanımlanır. Beyaz renk her rengi içerdiğinden, 0xFFFFFF şeklinde tanımlanır, yani üç bileşenin her biri 0xFF maksimum değeriyle sunulur.

Ama bazı görevler, resmin görünümünü tanımlayan renk saydamlığının belirtilmesini gerektirir, bu durumda resim, belli oranda saydamlığa sahip renklerle kaplanır. Alfa kanalı konsepti bu gibi durumlarda ortaya çıkar. RGB biçiminin bir ek bileşeni şeklinde uygulanır. ARGB biçim yapısı aşağıda gösterilmektedir.

ARGB

ARGB değerleri tipik olarak, her bir hane çiftinde sırasıyla Alpha, Red, Green ve Blue kanal değerlerinin temsil edildiği onaltılık biçim ile ifade edilirler. Örrneğin, 80FFFF00 rengi 50.2% mat sarıyı temsil eder. Başlangıçta 0x80, 50.2%'lik alfa değerini ayarlar, çünkü bu 0xFF değerinin 50.2%'sidir. Ardından, ilk FF çifti, kırmızının en yüksek değerini tanımlar; sonraki FF çifti, yeşil bileşenin en yüksek değerini tanımlar; son 00 çifti ise mavi bileşenin alabileceği en düşük değeri tanımlar (mavi yok). Yeşil ve kırmızı renklerin kombinasyonu sarıyı verir. Alfa kanalı kullanılmadığı takdirde girdi, RRGGBB şeklinde altı haneli biçime dönüşecektir; bunun nedeni, alfa kanalı değerlerinin en üstte yer alan uint tipli bitlerde tutulmasıdır.

Duruma bağlı olarak, onaltılık haneler '0x' veya '#' ön eki ile yazılabilirler; örneğin, 80FFFF00, 0x80FFFF00 veya #80FFFF00.

 

Örnek:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- saydamlığı ayarla
   uchar alpha=0x55;  // 0x55 yani 55/255=21.6 % saydamlık   
   //--- clrBlue rengini ARGB biçimine dönüştür
   PrintFormat("0x%.8X - clrBlue",clrBlue);
   PrintFormat("0x%.8X - clrBlue ARGB, alpha=0x55 (saydamlık 21.6%%)",ColorToARGB(clrBlue,alpha));
   //--- clrGreen rengini ARGB biçimine dönüştür
   PrintFormat("0x%.8X - clrGreen",clrGreen);
   PrintFormat("0x%.8X - clrGreen ARGB, alpha=0x55 (saydamlık 21.6%%)",ColorToARGB(clrGreen,alpha));
   //--- clrRed rengini ARGB biçimine dönüştür
   PrintFormat("0x%.8X - clrRed",clrRed);
   PrintFormat("0x%.8X - clrRed ARGB, alpha=0x55 (saydamlık 21.6%%)",ColorToARGB(clrRed,alpha));
  }

Ayrıca Bakınız

Kaynaklar, ResourceCreate(), TextOut(), color tipi, char, short, int ve long tipleri