在C#中将Integer映射为RGB颜色

本文关键字:RGB 颜色 映射 Integer 中将 | 更新日期: 2023-09-27 17:57:44

所以现在我有一个介于0和2^24之间的数字,我需要将它映射到三个RGB值。我在如何完成这件事上遇到了一些麻烦。如有任何协助,我们将不胜感激。

在C#中将Integer映射为RGB颜色

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

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

您可以进行

Color c = Color.FromArgb(someInt);

然后分别使用c.Rc.Gc.B作为红、绿和蓝值

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