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

C# 将整数映射到C中的RGB颜色#,c#,mapping,rgb,C#,Mapping,Rgb,现在我有一个介于0和2^24之间的数字,我需要将它映射到三个RGB值。我在如何完成这件事上有点麻烦。非常感谢您的帮助。您可以这样做 Color c = Color.FromArgb(someInt); 然后分别对红色、绿色和蓝色值使用c.R、c.G和c.B,根据颜色的位置,可以使用位移位来获得如下所示的单独颜色: int rgb = 0x010203; var color = Color.FromArgb((rgb >> 16) & 0xff, (rgb >>

现在我有一个介于0和2^24之间的数字,我需要将它映射到三个RGB值。我在如何完成这件事上有点麻烦。非常感谢您的帮助。

您可以这样做

Color c = Color.FromArgb(someInt);

然后分别对红色、绿色和蓝色值使用
c.R
c.G
c.B

根据颜色的位置,可以使用位移位来获得如下所示的单独颜色:

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

您可以使用
位转换器
类从int获取字节:

byte[] values = BitConverter.GetBytes(number);
if (!BitConverter.IsLittleEndian) Array.Reverse(values);
数组将有四个字节。前三个字节包含您的号码:

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

你们的表号是0x00RRGGBB(十六进制)?哈,我发誓我试过了。我想是人为错误吧。谢谢你的帮助。