RGB及ARGB中16进制的表示与转换方法

原文地址:RGB及ARGB中16进制的表示与转换方法

 

Flash 中的颜色

在 Flash 中,颜色就是一串特殊的数字,一个颜色值可以是0到16,777,215中的任意数值,这就是24位(bit)色彩。也许大家会问,为什么有 16,777,216(256*256*256)种颜色值,因为 Flash 使用 RGB 颜色值,意味着每个颜色都可以由红(red),绿(green),蓝(blue)三种颜色构成。这三种合成色的每一种都是一个从0到255中的数,所以,对于每个红黄蓝都有256种可能的深度,结果会有约1,678万种颜色。

这个系统之所以叫做24位颜色是因为要使用8位(0或1)才能表示256个数值。8位乘以3(红,黄,蓝)意味着需要24位才能表示1678万种颜色值。我们马上还要学到32位色系统,它有额外的8位数值表示透明度(alpha)。

很难想像一个值为11,273,634的颜色是什么样的。因此,开发人员通常采用另一种数值表示系统:十六进制。如果大家在 HTML 中使用过颜色,那么这对于你来说并不会陌生,但不管怎样还是让我们来学习一下这些基础知识吧。

使用十六进制表示颜色值

十六进制(Hexadecimal,简写 hex),以16为基础,每位数都是0到15中的任意一个数,而十进制则是以10为基础,每位数都是0到9中的任意一个数。由于没有可以表示10到15的数,所以要借用字母表的前六个字母,A到F,来表示它们。这样,每个16进制数都可以是0到F中的一个(在 Flash 中,十六进制数不区分大小写,使用A到F或a到f均可)。在 HTML 中使用16进制数,要加上 # 作为前缀加以标识。与其它语言一样,在 ActionScript 中,使用0x作为前缀。比如,十六进制的 0xA 与十进制的10相等,0xF等于15,0x10等于16。在十进制中,每一位都是它右边一位数的十倍,如243表示为2的100倍,4的10倍,3的1 倍。在十六进制中,每一位都是它右边一位数的十六倍,如0x2B3表示为2的256倍,B(或11)的16倍,3的1倍。
对于24位来说,就等于0xFFFFFF,此外,这6个十六进制数可以分为三部分。第一部分代表红色,第二部分代表绿色,最后两位表示蓝色,被象征性地记为0xRRGGBB。
记住每一个合成色都可以为0至255(十六进制表示:0x00到0xFF)中的值。因此,红色可以表示为 0xFF0000,表示纯红色,因为它的绿色为0,蓝色为0。同样,0x0000FF表示纯蓝色。

拿11,273,634为例,将它转换为十六进制(稍后为大家介绍一种简单的方法),结果为 0xAC05A2,可以把它分解为 red(红色) = AC,green(绿色) = 05,blue(蓝色) = A2。可以看出red(红色)和blue(蓝色)的值比较高,而绿色几乎没有,我们就可以猜到这个颜色大概为紫色,这是在十进制数中看不出来的。请注意,在 ActionScript 中,使用哪种进制表示都可以,在一个函数中使用颜色值既可使用十进制又可使用十六进制。对于 Flash 来说,11,273,634 和 0xAC05A2 是一个数,只是对于可怜的人类来说后面一种表示法更易读懂。
那么如何在两种进制之间进行转换呢,将十六进制转换为十进制非常容易。只要输出这个十六进制数就可以了,trace 函数会自动将它转换为十进制。
trace(0xAC05A2);
将十进制转换为十六进制要用到 toString(16)函数,如:
trace((11273634).toString(16));
输出结果为ac05a2,如果要使用这个数,不要忘记加上0x。

透明度和32位色

前面提到过,除了24位色以外,还有32位色,多出8位用于表示透明度。就像角度制与弧度制一样(第三章内容),AS 3 在24和32位色的使用上有些混杂。AS 3 的绘图 API 很大程度上是基于 Flash MX(Flash 6) 建立的,总之,绘图 API 函数使用一个特殊的参数来指定透明度,所以还要延用24位色。另外, BitmapData 类,是从 Flash 8 才加入的,并且使用的是32位色彩。如果大家对某个函数使用哪种色彩体系有疑问的话,请查看 ActionScript 参考手册。

我们可以使用十六进制以 0xRRGGBB 这样的格式来表示一个色彩值。同样,32位的颜色也是如此,以 0xAARRGGBB 这样的格式来表示,其中 AA 表示透明度。因此,0xFFFFFFFF 就表示不透明的白色,0x00FFFFFF 表示完全透明的白色,而 0x80FFFFFF 表示近似 50%透明度的白色。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值