gpt4 book ai didi

Java:更好的颜色选择算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:53:10 29 4
gpt4 key购买 nike

我有一个 ArrayList<Double> ,其值被转换为 Arc2D.Pie 的切片基于大小的图形(即 {1d,1d,2d,4d} 的数组将创建一个包含四个切片的图形,其中两个切片各占图形的八分之一,其中一个占四分之一,另一个占一半;一起,切片将排列成一个完整的圆圈)。这些切片中的每一个都有不同的颜色,既可以轻松地将切片映射到其他指示符(名称等),又可以避免乏味。

我选择颜色的算法最初非常简单:

public Color getColor(int index, int total) {
return Color.getHSBColor((float) index / (float) total, 1f, 1f);
}

然而,虽然这适用于大多数颜色(红色和蓝色,仅举几例),但也适用于某些颜色,例如青色(作为一组两个元素中的第二个元素特别突出;例如 {1d, 3d} 的数组)人眼不容易看到,因为它们太亮了。

我已将算法更改为

return Color.getHSBColor((float) index / (float) total, 1f, 0.8f);

试图使颜色变暗;然而,青色仍然很难看清,进一步降低亮度会使颜色变得相当难以区分。

有没有人有一个很好的、最好是简单的算法来创建一系列易于查看的颜色?一个好的测试是生成淡黄色和淡青色,并查看它们在白色背景上是否易于查看。

谢谢!

厕所

编辑:我现在改进了我的算法,通过改变饱和度和亮度来制作更多不同的颜色。不过,颜色看起来更不稳定;还有更多想法吗?

新算法:

float hue = (float) seriesIndex / (float) totalSeries;
int steps = 4;
float saturation = ((seriesIndex) % steps / (2f * steps)) + (0.5f);
float brightness = ((seriesIndex + ((steps + 1) / 2f)) % (steps + 1f) / (2f * (steps + 1f))) + 0.5f;
Color c = Color.getHSBColor(hue, saturation, brightness);

最佳答案

我喜欢灰度

 Color.rgb( 255 * (float)index/(float)total, 255 * (float)index/(float)total, 255 *      (float)index/(float)total);

否则,颜色分割的领域相当大。有些人可以将其分成乐队。

否则,如果您只需要 4 种颜色,我会从表格中挑选效果好的颜色:例如红色、蓝色、绿色和黑色。

关于Java:更好的颜色选择算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8784750/

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