java - 计算介于两种颜色之间的颜色?

标签 java algorithm colors

我需要可视化一个数字列表,这个列表每 x 分钟生成一次。我目前使用单行,旁边有数字。这工作正常,但在进行实时分析时,眼睛会变得很硬。

经过一番思考,我想出了用颜色编码数字的想法,一个大的负数是红色,一个大的正数是绿色,一个正常的正数是浅绿色,比正常数字略大的数字位于绿色和浅绿色。

为了说明这一点,我制作了一张图片:

enter image description here

我的问题。例如,如果我们有:

50: Color.green
0: Color.white
-50: Color.red

如何计算代表 25 的颜色?

最佳答案

对于 red <--> white <--> green 之间的严格线性表示,

import java.awt.Color;

/* Define the MAXIMUM saturation of RED and GREEN shades
 * Range (0-255)
 */
final int RED_MAX = 255;
final int GREEN_MAX = 255;

/* input val varies from -MAX to MAX */

/* output valColor varies from
 * -MAX = red
 *         ^
 *         |
 *         v
 *    0 = white
 *         ^
 *         |
 *         v
 *  MAX = green
 */

/* Normalised normVal varies from -255 to 255 */
normVal = (val*255)/MAX

if(val < 0) {
    /* Make it red-ish */
    valColor = new Color( RED_MAX,
                          255 + normVal, 
                          255 + normVal );
} else if (val > 0) {
    /* Make it green-ish */
    valColor = new Color( 255 - normVal), 
                          GREEN_MAX,
                          255 - normVal );
} else {
    /* Absolute White */
    valColor = new Color( 255, 255, 255 );
}

关于java - 计算介于两种颜色之间的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17997223/

相关文章:

java - .NET 中的 LinkedHashMap

java - 注入(inject)类上的 Guice 空指针错误

c# - 写出最大素数

javascript - 快速访问 Javascript 对象中深度嵌套的值

colors - BGR 色彩空间到底是什么?

java - stub 方法中的 Mockito 异常

java - build.xml 和 build-impl.xml 的区别

c++ - 对大量对进行排序

java - Color.red 和 Color.RED 之间的区别

css - 单击下一个元素时变回颜色