代码之家  ›  专栏  ›  技术社区  ›  Pradeep

将argb拆分为字节值

  •  8
  • Pradeep  · 技术社区  · 17 年前

    我有一个argb值存储为int类型。它是通过调用toargb存储的。

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

    例如

    int mycolor = -16744448;
    byte r,g,b,a;
    
    GetBytesFromColor(mycolor,out a, out r, out g, out b);
    

    如何实现GetBytesFromColor?

    为了给出上下文,我将在db as int中持久化的颜色值传递给需要单个字节值来构造颜色对象的Silverlight应用程序。

    System.Windows.Media.Color.FromArgb(byte a, byte r, byte g, byte b)
    
    2 回复  |  直到 17 年前
        1
  •  13
  •   Marc Gravell    17 年前

    您在32位整数的4个连续8位块之后;因此,掩蔽和移位的组合:

    b = (byte)(myColor & 0xFF);
    g = (byte)((myColor >> 8) & 0xFF);
    r = (byte)((myColor >> 16) & 0xFF);
    a = (byte)((myColor >> 24) & 0xFF);
    
        2
  •  1
  •   ba__friend    17 年前
    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;
    }