Создание линейной цветовой палитры - PullRequest
1 голос
/ 30 августа 2011

Я рисую БПФ и хочу лучшего цвета.У меня есть значения между X и Y, и я хочу представить их в спектре мощности (более высокое значение = более яркий цвет).В настоящее время я просто использую черный / белый (0-255 для RGB), но мне бы хотелось, чтобы это было несколько цветов с более высоким (цветовым) разрешением, чем 255 (65k?).

Мне нужны цвета длямежду ними происходит плавное затухание, поэтому, если 0 - черный, а 100 - белый, мне нужно, чтобы 50 был 50% белым (серым).Но я хочу, чтобы в последовательности было несколько цветов, а не только основные цвета RGB (красный, зеленый или синий).

Желательно, чтобы я мог выбирать, в какой точке цвета расположены (неравномерно).Например, [0] = "# 00000", [99] = "# 44000", [149] = "# FF0000", [199] = "# FFFF00" и т. Д.

Теперь мой вопроскак будут выглядеть расчеты?Я предполагаю, что есть какой-то простой / умный способ, о котором я не думаю.

Я смутно помню кое-что о каком-то другом методе вычисления цвета, кроме RGB, который будет работать для этого?Или это лучший способ использовать какую-то кисть на изображении, а затем выбрать значения цвета?

Я использую C # .Net, но мне не нужен полностью рабочий код (я могу это сделать) - поэтому любые примеры / подсказки будут хорошими.

1 Ответ

1 голос
/ 30 августа 2011

Вы можете использовать цветовое пространство HSL .

HSL color space

Когда L равно 0, вы получаете черный, а когда L - 1, вы получаете белый. Вы можете изменить H, скажем, от 0 до 1, чтобы изменить оттенок (или цвет). Это для максимальной насыщенности (S = 1).

Вот пример отображения. Чтобы использовать цвет HSL, вам нужно конвертировать его в RGB.

// Assume x is a double in the interval [0; 1]
var l = x;
var h = x;
var s = 1D;
var rgb = ConvertHslToRgb(h, s, l);
...