跳至内容

ColorToARGB

ColorToARGB

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

uint  ColorToARGB(
   color  clr,          // converted color in color format
   uchar  alpha=255     // alpha channel managing color transparency
   );

参数

clr

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

alpha

[in] 用于接收ARGB格式颜色的alpha通道值。该值可以从0(前景像素的颜色不会改变底层像素的显示)到255(底层像素的颜色完全被前景像素的颜色替代)。颜色的透明度以百分比计算,公式为(1-alpha/255)*100%。换句话说,alpha通道的值越小,颜色越透明。

返回值

以ARGB格式呈现颜色,其中Alpha、Red、Green、Blue(alpha通道、红色、绿色、蓝色)值按顺序排列在四个uint类型字节中。

注意

RGB是计算机图形学中屏幕像素颜色描述的基本且常用格式。基本颜色的名称用于设置红色、绿色和蓝色颜色分量。每个分量由一个字节描述,指定颜色饱和度在0到255的范围内(十六进制格式为0x00到0XFF)。由于白色包含所有颜色,因此描述为0xFFFFFF,即三个分量中的每一个都由最大值0xFF表示。

然而,某些任务需要指定颜色透明度来描述图像的外观,特别是当图像被某种程度的透明颜色覆盖时。为此引入了alpha通道的概念。它作为RGB格式的附加分量实现。ARGB格式结构如下所示。

ARGB

ARGB值通常使用十六进制格式表示,每对数字分别代表Alpha、Red、Green和Blue通道的值。例如,80FFFF00颜色代表50.2%的不透明黄色。最初,0x80设置50.2%的alpha值,因为它是0xFF值的50.2%。然后,第一个FF对定义红色分量的最大值;下一个FF对与前面的相同,但适用于绿色分量;最后的00对表示蓝色分量可以有的最小值(没有蓝色)。绿色和红色的组合产生黄色。如果不使用alpha通道,则条目可以减少到6位RRGGBB数字,这就是为什么alpha通道值存储在uint整数类型的顶部位中。

根据上下文,十六进制数字可以用'0x’或#‘前缀书写,例如80FFFF00、0x80FFFF00或#80FFFF00。

示例:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- set transparency
   uchar alfa=0x55;  // 0x55 means 55/255=21.6 % of transparency
   //--- derive conversion to ARGB for clrBlue color
   PrintFormat("0x%.8X - clrBlue",clrBlue);
   PrintFormat("0x%.8X - clrBlue ARGB with alfa=0x55 (transparency 21.6%%)",ColorToARGB(clrBlue,alfa));
   //--- derive conversion to ARGB for clrGreen color
   PrintFormat("0x%.8X - clrGreen",clrGreen);
   PrintFormat("0x%.8X - clrGreen ARGB with alfa=0x55 (transparency 21.6%%)",ColorToARGB(clrGreen,alfa));
   //--- derive conversion to ARGB for clrRed color
   PrintFormat("0x%.8X - clrRed",clrRed);
   PrintFormat("0x%.8X - clrRed ARGB with alfa=0x55 (transparency 21.6%%)",ColorToARGB(clrRed,alfa));
  }

另请参阅

资源ResourceCreate()TextOut()颜色类型char、short、int和long类型

最后更新于