ColorToARGB

该函数将color 类型转换为uint 类型以获得ARGB的颜色显示。ARGB颜色格式被用于生成图形资源文本展示,以及被用在CCanvas标准程序库类。

uint  ColorToARGB(
   color  clr,          // 以color格式转换颜色
   uchar  alpha=255     // 阿尔法通道管理彩色透明度
   );

参数

clr

[in]  color类型变量的颜色值。

alpha

[in]  阿尔法通道的值用来接收ARGB格式的颜色。该值可以从0(前景像素颜色不改变根本显示的颜色)设置到255(基本像素的颜色被前景像素颜色替代)。彩色透明度计算为 (1-alpha/255)*100%。换句话说,阿尔法通道的值越小颜色越透明。

返回值

以ARGB格式显示颜色,在这里Alfa, Red, Green, Blue(阿尔法通道,红,绿,蓝)的值按照四种uint类型字节系列设置。

注意

RGB 是基本的普通的使用格式,用于电脑图形屏幕的像素颜色描述。基本颜色名称通常用于红,绿和蓝色组件。每个组件通过在0-255(16进制格式0x00 到 0XFF)范围内指定色彩饱和度字节进行描述。由于白色涵盖了所有颜色,它被描述为0xFFFFFF,那就是,0xFF最大值呈现三个组件的每一个。

然而,如果它以带有透明度的颜色覆盖,那么一些任务需要指定色彩透明度以便描述图形。阿尔法通道就是为此引入的。它作为RGB格式的额外组件实施。ARGB格式结构显示如下。

ARGB

ARGB值通常使用16禁止的格式来表达,每组数字分别代表阿尔法,红色,绿色和蓝色通道的值。例如,80FFFF00颜色代表透明度50.2% 的黄色。最初,0x80 设置 50.2% 阿尔法值,因为0xFF值的50.2%。然后,第一组FF定义红色组件的最高值,下一组FF类似前一个但是绿色;最后组00代表蓝色组件的最低值(没有蓝色)。绿色和红色合成黄色。如果不使用阿尔法通道,输入可能减到6 RRGGBB 数字,这就是将阿尔法通道值存储在uint整型最高位的原因。

根据内容,16进制数字可以通过'0x' 或 '#' prefix编写,例如,80FFFF00, 0x80FFFF00 或 #80FFFF00。

 

例如:

//+------------------------------------------------------------------+
//| 脚本程序开始函数                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 设置透明度
   uchar alpha=0x55;  // 0x55 means 55/255=21.6 % of transparency   
   //--- 派生转换clrBlue 到 ARGB
   PrintFormat("0x%.8X - clrBlue",clrBlue);
   PrintFormat("0x%.8X - clrBlue ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrBlue,alpha));
   //--- 派生转换clrGreen 到 ARGB
   PrintFormat("0x%.8X - clrGreen",clrGreen);
   PrintFormat("0x%.8X - clrGreen ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrGreen,alpha));
   //--- 派生转换clrRed color 到 ARGB 
   PrintFormat("0x%.8X - clrRed",clrRed);
   PrintFormat("0x%.8X - clrRed ARGB with alpha=0x55 (transparency 21.6%%)",ColorToARGB(clrRed,alpha));
  }

另见

资源ResourceCreate()TextOut()颜色类型char, short, int 和长整型