gpt4 book ai didi

java - 更改 rgb 颜色值以表示一个值

转载 作者:行者123 更新时间:2023-11-29 06:47:56 25 4
gpt4 key购买 nike

我正在尝试在 java 中的 Canvas 上进行颜色更改,以表示颜色所表示的值相对于彼此的强弱程度。

RGB 颜色必须是相同的颜色,只是深浅不同,例如白色到灰色到黑色,以及介于两者之间的每种灰色。考虑到我所代表的值变化很大,从 -9999999 到正 9999999,我该如何更改 rgb 值。

最佳答案

我认为你应该看看HSL/HSV而不是 RGB。

虽然 RGB 本质上是基本的,因为它根据原色表示颜色,但它不允许您对 R、G 或 B 值进行“可理解的”更改以达到“相似”的颜色。使用 HSL/HSV 模型,您将能够更改亮度/亮度/值 (L/V) 以获得具有不同灰度的颜色,或更改色调 (H) 以获得整个光谱中的相似颜色.您可以从全亮度(白色)开始,通过降低 L/V 值创建更暗的灰色调,最终达到无亮度的颜色(黑色)。

非常温和 introduction to color theory, for developers is available here .

关于您的问题,您应该根据 HSL 来表达您的颜色,增加饱和度值以获得从白色到黑色的一系列颜色。当然,如果你想要介于白色和黑色之间的灰色调而没有任何其他颜色,你应该将色调保持在最低限度。

下面是一个关于如何获得一系列颜色的简短示例。为简洁起见,我将颜色填充到一个数组中,但这不是必需的,因为您可能想立即使用颜色(除了考虑内存要求)。

private Color[] produceColorRange(int steps)
{
float value = 1.0f; //Starting with full brightness
Color[] colors = new Color[steps];
for(int ctr = 0; ctr < steps; ctr++)
{
value = value - (1.0f/steps); //tend to darkness
int rgb = Color.HSBtoRGB(0.7f, 0.0f, value); //create a darker color
//Hue is Blue, not noticeable
//because Saturation is 0
Color color = new Color(rgb);
colors[ctr] = color;
}
return colors;
}

如果您使用上述方法并绘制 JFrame,您将能够得到类似于下面的结果(除了我修改了色调和饱和度以获得我的颜色范围)。

Color Range screenshot

请注意,如果您想要一种获取颜色范围的更简单方法,请使用 Color.WHITE 初始化 Color 对象并调用 color.darker()。当然,您将无法控制增量。

关于java - 更改 rgb 颜色值以表示一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1423925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com