在C#中将整数映射到RGB颜色

时间:2011-05-25 21:52:50

标签: c# mapping rgb

所以现在我有一个0到2 ^ 24之间的数字,我需要将它映射到三个RGB值。我在如何实现这一点上遇到了一些麻烦。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:16)

你可以做到

Color c = Color.FromArgb(someInt);

然后分别使用c.Rc.Gc.B表示红色,绿色和蓝色值

答案 1 :(得分:14)

根据颜色所在的位置,您可以使用位移来获得各种颜色:

int rgb = 0x010203;
var color = Color.FromArgb((rgb >> 16) & 0xff, (rgb >> 8) & 0xff, (rgb >> 0) & 0xff);

上面的表达式假设为0x00RRGGBB,但您的颜色可能为0x00BBGGRR,在这种情况下只需更改16, 8, 0值。

这也使用System.Drawing.Color代替System.Windows.Media.Color或您自己的颜色类。这取决于应用程序。

答案 2 :(得分:3)

您可以使用BitConverter类从int获取字节:

byte[] values = BitConverter.GetBytes(number);
if (!BitConverter.IsLittleEndian) Array.Reverse(values);

该数组将有四个字节。前三个字节包含您的号码:

byte b = values[0];
byte g = values[1];
byte r = values[2];