【问题标题】:Mapping integers to darkish colours将整数映射到暗色
【发布时间】:2011-05-31 06:04:41
【问题描述】:

我想知道如何将整数映射到颜色,但是这样做是为了使序列对颜色没有太大影响(尽管它真的无关紧要),而且还可以插入一遍又一遍地输入相同的数字将给出相同的颜色。

它用于 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,但这会根据生成数字的顺序而变化。如果没有添加顺序性,就可以了。

我忘了说,颜色应该是暗的,这样白色的文字才能正确显示出来。

干杯,
克里斯

【问题讨论】:

  • 考虑写一张表格,说明您正在考虑的价值观。

标签: java swing colors random jtable


【解决方案1】:

鉴于您希望使用自动化方法产生“暗”色,我会寻找 Color.getHSBColor(),并在保持饱和度和亮度不变的同时更改色调。您可能需要剪掉色轮中代表黄色的部分。

【讨论】:

    【解决方案2】:

    使用hash function 根据您的整数计算 RGB 分量。如果您通常使用每个组件 1 个字节,则生成一个 3 字节散列值。任何体面的哈希值都将确保相似的输入会产生不相似的哈希值。

    为确保颜色足够深,您可以在每个颜色分量中将其中一个位(例如第 5 个位)固定为 1。或者您可以使用 HSB 方案,修复黑暗级别。

    【讨论】:

      【解决方案3】:

      还要考虑Colorbrighter()darker() 方法。这个example 在它的FocusHandler 中使用了前者。

      【讨论】:

        猜你喜欢
        • 2011-09-02
        • 2016-02-01
        • 2011-11-20
        • 1970-01-01
        • 1970-01-01
        • 2020-12-17
        • 2015-10-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多