アルファ+ RGB - > ARGB?
-
18-09-2019 - |
質問
AS3において、A 32ビットARGB値にRGBの色(例えばは0xFF0000)とα値(例えば0.5)に変換するユーティリティまたは機能がありますか?
そして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は、テクスチャの「テクスチャブレンディング」と透明性を可能にするために、ビデオカードによって使用される一般的なフォーマットです。それはパソコンで一般的な32ビット・ワード・サイズのうちフリー別の8ビットを残すように、ほとんどのシステムは、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の最後の2桁が、ある入れ、上記の優れた答えに多くのものを追加することはできません例えば、
//white
var white:uint = 0xFFFFFF;
//transparent white
var transparent:uint = 0xFFFFFFFF;
スケールは通常通りであり、00 = 1 FF = 0。
ホープ、このことができます。
所属していません StackOverflow