创建线性调色板

时间:2011-08-30 15:58:45

标签: .net colors color-picker

我正在绘制FFT并想要更好的颜色。我有X和Y之间的值,并希望在功率谱中表示它们(更高的值=更亮的颜色)。目前我只使用黑/白(RGB上为0-255),但我希望它是多种颜色,分辨率高于255(65k?)。

我需要颜色在它们之间很好地淡化,所以如果0是黑色而100是白色,我需要50是50%白色(灰色)。但我想要按顺序排列多种颜色,而不仅仅是RGB原色(红色,绿色或蓝色)。

我希望能够选择颜色的位置(不均匀间隔)。例如,[0] =“#00000”,[99] =“#44000”,[149] =“#FF0000”,[199] =“#FFFF00”等。

现在我的问题是计算结果如何?我猜我有一些简单/聪明的方式,我没想到。

我依稀记得一些关于除RGB之外的其他颜色计算方法的东西会对此有用吗?或者是在图片上使用某种画笔,然后对颜色值进行采样的最佳方法?

我正在使用C#.Net,但我不需要完全正常工作的代码(我可以做到) - 所以任何样本/提示都会很好。

1 个答案:

答案 0 :(得分:1)

您可以使用HSL color space

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);
相关问题