我想知道如何将整数映射到颜色,但这样做会使序列对颜色没有太大影响(尽管它确实无关紧要)并且还要插入反复使用相同数字会产生相同的颜色。
它适用于JTable,并对表格的行着色以突出显示具有相同ID的类似行。存储任何元数据意味着许多混乱和低效率,我想避免。
基本上,f(x)->c for all x in the positive range of integers such that f(x)->c1, f(x+1)->c2, c1 !~ c2
,其中x
是id,c
是结果颜色。我曾考虑使用Random
,但这会根据生成数字的顺序而改变。如果没有添加顺序,那就没关系。
我忘了提到,颜色应该是暗的,以便白色文字能够正确显示。
干杯,
克里斯
答案 0 :(得分:5)
使用hash function从整数计算RGB分量。如果您使用每个组件通常的1个字节,则生成3个字节的哈希值。任何合适的哈希值都将确保类似的输入将导致不相似的哈希值。
为确保颜色足够深,您可以在每个颜色分量中将其中一个位(例如第5个)固定为1。或者你可以使用HSB方案,修复黑暗等级。
答案 1 :(得分:2)
鉴于您希望自动化方法产生“暗色”颜色,我会看Color.getHSBColor(),并在保持饱和度和亮度相同的同时改变色调。您可能需要剪切代表黄色的色轮部分。
答案 2 :(得分:2)
还要考虑Color
的{{3}}和brighter()
方法。这个darker()
使用前者FocusHandler
。