我想知道如何将整数映射到颜色,但是这样做使得序列对颜色的影响不大(尽管实际上并没有多大关系),并且还希望将相同的数字插入到颜色中一遍又一遍的功能将给出相同的颜色。
它用于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
,但这会根据生成数字的顺序而改变。如果没有增加顺序性,那就可以了。
我忘了提一下,颜色应该是深色的,这样白色文字才能正确显示。
干杯,
克里斯
最佳答案
使用hash function从整数计算RGB分量。如果您通常使用每个组件1个字节,则生成3个字节的哈希值。任何体面的哈希值将确保相似的输入将导致非相似的哈希值。
为确保颜色足够深,您可以将每个颜色分量中的其中一位(例如第5位)固定为1。或者,您可以使用HSB方案来固定黑暗程度。