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

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

你可以做

Color c = Color.FromArgb(someInt); 

然后分别使用cRcGcB表示红色,绿色和蓝色值

根据颜色在哪里,你可以使用位移来获得这样的颜色:

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

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

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

您可以使用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]; 

上面的代码工作很好。 只是一个小的修正,需要交换b和r如下。

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