我写了一个基于JPanel的类,它根据我从音频信号的FFT分析得到的数据显示瀑布图。
问题是:如何确定要使用的颜色?
我目前执行此操作的功能如下:
/**
* Returns the color for the given FFT result value.
* @param currentValue One data entry of the FFT result
* @return The color in which the pixel should be drawn
*/
public Color calcColor(float currentValue){
float max_color_value=255+255+255;//r+g+b max value
//scale this to our MAX_VALUE
float scaled_max_color_val=(max_color_value/MAX_VALUE)*currentValue;
//split into r g b parts
int r=0;
int g=0;
int b=0;
if(scaled_max_color_val < 255) {
b=(int)Math.max(0, scaled_max_color_val);
} else if(scaled_max_color_val > 255 && scaled_max_color_val < 255*2){
g=(int)Math.max(0, scaled_max_color_val-255);
} else if(scaled_max_color_val > 255*2 ){
r=(int)Math.max(0, scaled_max_color_val-255*2);
r=Math.min(r, 255);
}
return new Color(r, g, b);
}
所以我的目标是以一种颜色取决于currentValue
的方式改变这个功能。来自低 - >高的currentValue
应该与黑色相对应 - &gt;绿色 - &gt;黄色 - &gt;红色。
如何在我的函数中实现它?