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

13
目前我有一个介于0到2的24次方之间的数字,我需要将它映射到三个RGB值。我在如何完成这个任务方面遇到了一些困难。非常感谢能给予任何帮助。

你的数字是否为0x00RRGGBB(十六进制)格式? - Will A
3个回答

18

根据颜色的位置不同,您可以使用位移运算符来获取单个颜色,如下所示:

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或你自己的颜色类。这取决于应用程序。


17
你可以这样做。
Color c = Color.FromArgb(someInt);

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


哈哈,我本来以为我已经尝试过那个了。我想这是人为的错误吧。感谢您的帮助。 - Evan Fosmark

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];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接