将ARGB拆分为字节值

Pra*_*eep 8 c# silverlight wpf

我有一个存储为int类型的ARGB值.它是通过调用ToArgb存储的.

我现在想要int值的各个颜色通道的字节值.

例如

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

GetBytesFromColor(mycolor,out a, out r, out g, out b);
Run Code Online (Sandbox Code Playgroud)

你将如何实现GetBytesFromColor?

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

System.Windows.Media.Color.FromArgb(byte a, byte r, byte g, byte b)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 13

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

b = (byte)(myColor & 0xFF);
g = (byte)((myColor >> 8) & 0xFF);
r = (byte)((myColor >> 16) & 0xFF);
a = (byte)((myColor >> 24) & 0xFF);
Run Code Online (Sandbox Code Playgroud)