为功率计生成红色和绿色之间的颜色 (colors that start with f)

我正在写一个 Java 游戏,我想实现一个功率计,你将如何努力拍摄的东西。

我正在写一个 Java 游戏,我想实现一个功率计,你将如何努力拍摄的东西。

我需要写一个函数,它需要一个介于 0-100 之间的 int,并且根据这个数字有多高,它将返回绿色(功率标度上的 0)和红色(功率标度上的 100)之间的颜色。

Similar to how volume controls work:
volume control

我需要对颜色的红色,绿色和蓝色组件执行什么操作才能生成绿色和红色之间的颜色?

所以,我可以运行说,getColor(80),它将返回一个橙色(它在 R,G,B 中的值)或getColor(10),它将返回一个更绿色 / 的 RGB 值。

我知道我需要增加一个新的颜色的 R,G,B 值的组成部分,但我不知道具体是什么上升或下降的颜色从绿色-红色转变。

进度:

我最终使用 HSV / HSB 颜色空间,因为我更喜欢渐变(中间没有深棕色)。

我使用的函数是:

public Color getColor(double power)
{
    double H = power * 0.4; // Hue (note 0.4 = Green, see huge chart below)
    double S = 0.9; // Saturation
    double B = 0.9; // Brightness
    return Color.getHSBColor((float)H, (float)S, (float)B);
}

其中“power”是 0.0 到 1.0 之间的数字。0.0 将返回鲜红色,1.0 将返回鲜绿色。

Java Hue Chart:
Java Hue Chart

206

这应该可以工作-只需线性缩放红色和绿色值即可。假设您的最大红色 / 绿色 / 蓝色值为255,并且n0 .. 100范围内

R = (255 * n) / 100
G = (255 * (100 - n)) / 100 
B = 0

(针对整数数学进行了修订,对 Ferrucio 表示敬意)

另一种方法是使用HSV colour model,并以适合您的任何饱和度和值将色调从0 degrees(红色)循环到120 degrees(绿色)。

下面是每种技术的演示-顶部渐变使用 RGB,底部使用 HSV:

http://i38.tinypic.com/29o0q4k.jpg

32

在我的头顶,这里是 HSV 空间中的绿色-红调过渡,转换为 RGB:

blue = 0.0
if 0<=power<0.5:        #first, green stays at 100%, red raises to 100%
    green = 1.0
    red = 2 * power
if 0.5<=power<=1:       #then red stays at 100%, green decays
    red = 1.0
    green = 1.0 - 2 * (power-0.5)

上例中的红色,绿色,蓝色值是百分比,您可能希望将它们乘以 255 以获得最常用的 0-255 范围。

14

简短复制 `n` 粘贴答案...

在 Java Std 上:

int getTrafficlightColor(double value){
    return java.awt.Color.HSBtoRGB((float)value/3f, 1f, 1f);
}

在 Android 上:

int getTrafficlightColor(double value){
    return android.graphics.Color.HSVToColor(new float[]{(float)value*120f,1f,1f});
}

注意:value 是介于 0 和 1 之间的数字,表示红色到绿色条件。

10

如果你想要一个绿色--红色的表示像接受的答案建议,然后看看这个。

http://jsfiddle.net/0awncw5u/2/
function percentToRGB(percent) {
    if (percent === 100) {
        percent = 99
    }
    var r, g, b;
    if (percent < 50) {
        // green to yellow
        r = Math.floor(255 * (percent / 50));
        g = 255;
    } else {
        // yellow to red
        r = 255;
        g = Math.floor(255 * ((50 - percent % 50) / 50));
    }
    b = 0;
    return "rgb(" + r + "," + g + "," + b + ")";
}
function render(i) {
    var item = "<li style='background-color:" + percentToRGB(i) + "'>" + i + "</li>";
    $("ul").append(item);
}
function repeat(fn, times) {
    for (var i = 0; i < times; i++) fn(i);
}
repeat(render, 100);
li {
    font-size:8px;
    height:10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul></ul>

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(737)
java听 ContextRefreshedEvent
上一篇
跨多个班次开始时间计算生产结束时间(end time production)
下一篇

相关推荐

  • 使用定位小部件时 氩气按钮仅从底部工作(argon colors)

    当按钮被按下时,按钮工作的底部只有一半,我正在投票栏,我在顶部使用堆栈并使用两个氩气按钮,一个是屏幕的左侧,一个是屏幕的右侧,两个按钮都是半裁剪的,所以当我点击按钮时,它没有反应,看起来不是 wokring,但是当我们点击 Argon 按钮的底部时,它的工作这里是Screenshot…

    2022-11-11 15:20:18
    0 99 33
  • java实现websocket:如何使用Java实现Websocket通信

    示例示例Java实现的步骤如下:在服务器端创建一个对象,监听指定的端口,等待客户端连接。…

    2023-01-17 13:12:07
    0 96 29
  • windows11只有一个c盘怎么分盘:如何在Windows 11中有效地分割C盘

    Windows 11只有一个C盘分盘的方法如下:打开“计算机”,右键单击C盘,选择“管理”;…

    2023-01-01 05:54:14
    0 85 31
  • vscode code命令:# 如何使用 VSCode 命令

    VSCode Code命令是Visual Studio Code的一个内置命令,用于在本地和远程服务器上执行代码。它可以让你在不同的系统上运行代码,而不需要安装任何软件。…

    2023-01-22 09:55:35
    0 58 18
  • python random.sample函数:Exploring the Magic of Random Sampling

    random.sample函数是Python random模块中的一个函数,用于从指定的序列中随机获取指定长度的片断。该函数不会修改原有序列。…

    2023-01-02 03:16:46
    0 52 40
  • canvas 滚动:Unlock the Power of Canvas Scrolling to Transform Your

    Canvas滚动是指在Canvas画布上实现滚动效果的一种技术。它可以通过改变画布的位置来实现滚动,也可以通过改变画布的大小来实现滚动。…

    2023-01-03 01:47:42
    0 33 65
  • android 视频编码深入理解MediaCodec API

    Android 视频编码是指将原始视频数据经过压缩编码后,生成新的视频数据,以便减少视频文件的体积,提高传输速度,以及更好地在 Android 设备上播放。…

    2023-01-07 02:13:42
    0 24 79
  • cv树洞柒夜事件CV树洞中的秘密与惊奇

    cv树洞柒夜事件是一个有趣的计算机视觉活动,它提供了一种新的方式来利用计算机视觉技术来探索和发现景观。它始于2020年7月,由一群热爱计算机视觉的研究者和开发者发起,他们希望通过使用机器学习技术来探索景观中的精彩之处。cv树洞柒夜事件的目标是使用机器学习技术来探索景观中的精彩之处,并利用这些发现来改善景观设计。参与者需要使用机器学习技术来探索景观,并利用这些发现来改善景观设计。参与者可以使用Python,OpenCV,TensorFlow等技术来完成任务,并将其发布在GitHub上。…

    2023-01-08 12:49:50
    0 56 55

发表评论

登录 后才能评论

评论列表(72条)