Отображение целого числа в цвет RGB в C # - PullRequest
13 голосов
/ 26 мая 2011

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

Ответы [ 3 ]

16 голосов
/ 26 мая 2011

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

Color c = Color.FromArgb(someInt);

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

14 голосов
/ 26 мая 2011

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

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 голосов
/ 26 мая 2011

Вы можете использовать класс 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];
...