阿尔法+ RGB - > ARGB?
-
18-09-2019 - |
题
在AS3,是否有一个实用程序或功能到RGB颜色(例如为0xFF0000)和α值(例如0.5)转换成一个32位ARGB值?
和从ARGB到RGB +阿尔法?
一些说明:一个BitmapData可以在其构造方法的ARGB值,但填充形状在精灵通常需要RGB值。我想上述实用程序来确保颜色匹配。
解决方案
var argb : int = (alpha<<24)|rgb;
var rgb : int = 0xFFFFFF & argb;
var alpha : int = (argb>>24)&0xFF;
其他提示
A,R,G,B是由视频卡,以允许“纹理混合”和透明度的纹理的公共格式。大多数系统仅使叶片另一个8位游离出一个32位的字的大小,其是常见的个人电脑使用的R,G,和B 8位。
The mapping is:
For Bits:
33222222 22221111 11111100 00000000
10987654 32109876 54321098 76543210
AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
00000000 RRRRRRRR GGGGGGGG BBBBBBBB
像这样:
private function toARGB(rgb:uint, newAlpha:uint):uint{
var argb:uint = 0;
argb = (rgb);
argb += (newAlpha<<24);
return argb;
}
private function toRGB(argb:uint):uint{
var rgb:uint = 0;
argb = (argb & 0xFFFFFF);
return rgb;
}
如果阿尔法可以用8位来表示,它是可能的。只是映射您的32位ARGB值的每个区域的相应的变量,例如
0x0ABCDEF1
α - 的0x0A
红 - 0xBC
绿色 - 写0xDE
蓝 - 的0xf1
private function combineARGB(a:uint,r:uint,g:uint,b:uint):uint {
return ( (a << 24) | ( r << 16 ) | ( g << 8 ) | b );
}
我真的不能添加任何东西更上述优秀的答案,但是把更多的简单化,阿尔法值在UINT的最后两位数字,例如:
//white
var white:uint = 0xFFFFFF;
//transparent white
var transparent:uint = 0xFFFFFFFF;
的规模是像往常一样,00 = 1 FF = 0。
希望这有助于
不隶属于 StackOverflow