Отображение целого числа с цветом RGB в С#

Итак, сейчас у меня есть число от 0 до 2 ^ 24, и мне нужно сопоставить его с тремя значениями RGB. У меня возникли проблемы с тем, как бы я это сделал. Любая помощь приветствуется.

Ответы

Ответ 1

Вы можете сделать

Color c = Color.FromArgb(someInt);

а затем используйте c.R, c.G и c.B для красных, зеленых и синих значений соответственно

Ответ 2

В зависимости от того, какой цвет есть, вы можете использовать смещение битов, чтобы получить отдельные цвета следующим образом:

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 или ваш собственный класс цвета. Это зависит от приложения.

Ответ 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];

Ответ 4

приведенный выше код работает решёткой. просто небольшая коррекция, нужно поменять местами b и r, как показано ниже.

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