2

感谢您的时间 :)。我已经查看了 TYPE_INT_RGB 和 TYPE_INT_ARGB 的格式,现在知道如何将此 TYPE_INT_RGB 转换为 4 个单独的值,但是如果我要对每个值进行修改(比如每个添加 20,所以 Alpha+=20,red+=20 ,等等)我将如何将这些值重新组合成这种 TYPE_INT_RGB 格式?谢谢!

4

3 回答 3

5
// to extract the components into individual ints.
int argb = something();
int red = 0xFF & ( argb >> 16);
int alpha = 0xFF & (argb >> 24);
int blue = 0xFF & (argb >> 0 );
int green = 0xFF & (argb >> 8 );

// to recreate the argb
int argb = (alpha << 24) | (red << 16 ) | (green<<8) | blue;
于 2012-05-12T22:48:40.950 回答
3

我相信这应该有效

int RGB = alpha;
RGB = (RGB << 8) + red;
RGB = (RGB << 8) + green;
Rgb = (RGB << 8) + blue;

还有另一种不移位的方法,但我相信你会弄明白的。

这个也可以:

int rgba = new java.awt.Color(r,g,b,a).getRGB();
于 2012-05-12T22:20:53.457 回答
3

我会用java.awt.Color这个。

int ARGB = new Color(red, green, blue, alpha).getRGB();

我猜您正在使用按位运算来提取各个颜色通道,但是该Color课程再次可以隐藏那些血腥的细节。

Color color = new Color(ARGB);
int red = color.getRed();
int green = color.getGreen();
// etc.
于 2012-05-12T22:47:57.800 回答