在as3中,是否有一个实用程序或函数可以将RGB色(例如0xFF0000)和Alpha值(例如.5)转换为A32位ARGB值?
从ARGB到RGB + alpha?
一些解释: bitmapdata可以在其构造函数中接受ARGB值,但在sprites中填充形状通常需要RGB值。我想前面提到的实用程序,以确保颜色匹配。
发布于 2009-07-19 14:47:03
var argb : int = (alpha<<24)|rgb;
var rgb : int = 0xFFFFFF & argb;
var alpha : int = (argb>>24)&0xFF;
发布于 2009-07-19 16:03:19
A、R、G、B是视频卡使用的一种通用格式,用于在纹理中实现“纹理混合”和透明度。大多数系统只对R、G和B使用8位,因此在PC机中常见的32位字长之外还剩下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;
}发布于 2009-07-19 14:47:12
如果alpha可以用8比特表示,这是可能的。例如,只需将32位ARGB值的每个区域映射为相应的变量
0x0ABCDEF1
alpha - 0x0A
红色- 0xBC
绿色- 0xDE
蓝色- 0xF1
https://stackoverflow.com/questions/1150046
复制相似问题