我需要将从0.0到1.0的值转换成它们的颜色表示(每个值都是一个像素)。我正在制作一个频谱图,因此,值越高,像素就越亮(如下图所示)。
我该如何做?我正在使用C#工作,但通用解决方案也可以。
示例:
我该如何做?我正在使用C#工作,但通用解决方案也可以。
示例:
这个答案不仅会告诉你如何从一个浮点数值创建颜色,而且输出的结果应该与所示的强度比例尺相当吻合。
private float LinearStep(float x, float start, float width = 0.2f)
{
if (x < start)
return 0f;
else if (x > start+width)
return 1;
else
return (x-start) / width;
}
private float GetRedValue(float intensity)
{
return LinearStep(intensity, 0.2f);
}
private float GetGreenValue(float intensity)
{
return LinearStep(intensity, 0.6f);
}
private float GetBlueValue(float intensity)
{
return LinearStep(intensity, 0f)
- LinearStep(intensity, 0.4f)
+ LinearStep(intensity, 0.8f);
}
private Color getColor(float intensity)
{
return Color.FromArgb(255,
(int)(255*GetRedValue(intensity)),
(int)(255*GetGreenValue(intensity)),
(int)(255*GetBlueValue(intensity))
);
}
red = 255*value
。 - SerdalisR = value*255, G = 255-R, B = 0
。 - Serdalis0.01
对应您输入的值(例如0.45将变成colors[45]),然后将像素更改为该数组中的颜色。 - MarcinJuraszek