Java - 两种颜色之间的颜色

时间:2015-06-24 01:26:57

标签: java colors

在我的Java游戏中,我正在制作一个健康栏。玩家的健康状况范围为0.0到100.0。我想根据玩家的健康状况选择红色和绿色之间的颜色。如果运行状况为100.0,则颜色应为rgb(0,255,0)。如果health为0.0,则颜色应为rgb(255,0,0)。同样,如果health = 50.0,则颜色应为rgb(127,127,0)。因此,它返回的颜色是红色和绿色之间的混合,具体取决于健康状况。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:0)

假设你希望它线性变化(看起来似乎有道理):

  • 红色:255 - 生命值* 2.55
  • 绿色:健康* 2.55
  • 蓝色:0

这是有效的,因为如果你想让它线性变化,你会得到A * health + B形式的东西。

答案 1 :(得分:0)

像这样简单吗?

import java.awt.Color;

public class QuickTester {

    public static void main(String[] args) {

        System.out.println(getColor(100).toString());
        System.out.println(getColor(75).toString());
        System.out.println(getColor(50).toString());
        System.out.println(getColor(25).toString());
        System.out.println(getColor(0).toString());
    }

    private static Color getColor(double currHp) {

        int green = ((int) (currHp / 100.0 * 255));
        int red = 255 - green;

        return new Color(red, green, 0);
    }
}

<强>输出:

java.awt.Color[r=0,g=255,b=0]
java.awt.Color[r=64,g=191,b=0]
java.awt.Color[r=128,g=127,b=0]
java.awt.Color[r=192,g=63,b=0]
java.awt.Color[r=255,g=0,b=0]

您可以直接使用Color返回,我使用toString()进行原型设计。