【问题标题】:split ARGB into byte values将 ARGB 拆分为字节值
【发布时间】:2009-08-25 13:17:05
【问题描述】:

我有一个存储为 int 类型的 ARGB 值。它是通过调用 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)

【问题讨论】:

    标签: c# wpf silverlight


    【解决方案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;
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这个过程如何逆转?
      • mycolor = (a << 24) + (r << 16) + (g << 8) + b;
      猜你喜欢
      • 2022-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 2021-06-14
      • 2014-06-15
      相关资源
      最近更新 更多