将ARGB拆分为字节值

时间:2009-08-25 13:17:05

标签: c# wpf silverlight

我将ARGB值存储为int类型。它是通过调用ToArgb存储的。

我现在想要从int值中获得各个颜色通道的字节值。

例如

int mycolor = -16744448;
byte r,g,b,a;

GetBytesFromColor(mycolor,out a, out r, out g, out b);

你将如何实现GetBytesFromColor?

为了给上下文我将db中的颜色值作为int传递给silverlight应用程序,该应用程序需要单个字节值来构造颜色对象。

System.Windows.Media.Color.FromArgb(byte a, byte r, byte g, byte b)

2 个答案:

答案 0 :(得分:13)

你是从32位整数后的4个连续8位块之后;所以掩盖和转移的组合:

b = (byte)(myColor & 0xFF);
g = (byte)((myColor >> 8) & 0xFF);
r = (byte)((myColor >> 16) & 0xFF);
a = (byte)((myColor >> 24) & 0xFF);

答案 1 :(得分:1)

public void GetBytesFromColor(int color, out a, out r, out g, out b)
{
    Color c = Color.FromArgb(color);
    a = c.A;
    r = c.R;
    g = c.G;
    b = c.B;
}