当前位置: 首页 > 面试题库 >

如何动态计算颜色列表?

鲁展
2023-03-14
问题内容

为了在GWT小部件中表示具有不同颜色的对象列表,我们需要动态获取与对象具有不同颜色的颜色列表。由于列表的大小可以变化,因此我们需要能够计算出这样的颜色列表。


问题答案:

我的解决方案的另一个版本,范围:

List<int> getUniqueColors(int amount) {
    final int lowerLimit = 0x10;
    final int upperLimit = 0xE0;    
    final int colorStep = (upperLimit-lowerLimit)/Math.pow(amount,1f/3);

    final List<int> colors = new ArrayList<int>(amount);

    for (int R = lowerLimit;R < upperLimit; R+=colorStep)
        for (int G = lowerLimit;G < upperLimit; G+=colorStep)
            for (int B = lowerLimit;B < upperLimit; B+=colorStep) {
                if (colors.size() >= amount) { //The calculated step is not very precise, so this safeguard is appropriate
                    return colors;
                } else {
                    int color = (R<<16)+(G<<8)+(B);
                    colors.add(color);
                }               
            }
    return colors;
}

这是一个更高级的功能,因为它会生成彼此之间尽可能不同的颜色(类似于@aiiobe所做的事情)。

通常,我们将范围划分为红色,绿色和蓝色三个子范围,计算我们需要迭代多少步(通过应用pow(range,1f / 3))并对其进行迭代。

例如,给定数字3,它将生成0x0000B1, 0x00B100, 0x00B1B1。对于10号,它将是:0x000076, 0x0000EC, 0x007600, 0x007676, 0x0076EC, 0x00EC00, 0x00EC76, 0x00ECEC, 0x760000, 0x760076



 类似资料:
  • 问题内容: 我想用包含不同长度字符串的列创建一个PdfPTable。我了解到,每一列的每个单元格/列的宽度都相同(默认值),或者可以设置每一列应占用的空间比例。 但是,我希望列的宽度可以根据需要而定,但不要任何宽度都取决于插入的数据。假设表格很容易放在页面上(不间断!)。当然,我可以手动浏览所有数据并计算每列的最大字符串长度,并相应地设置表的属性,但是我想知道itext本身是否已经提供了这样一个通

  • 之前用过了静态的纹理设置材质,这次来尝试一下动态的变换,这次来尝试颜色变换 先创建工程,步骤略 添加一个管线,参考官方示例Polyline Volume,每个示例的代码,都用一下,说不定学到点新东西呢~ (#^.^#) 这里按理说应该是要给纹理赋值了,要它动态变化,一般有两种思路,其一是赋值一次,然后之后用代码(定时器)动态修改材质,其二是使用回调,在上一篇鹰眼图中尝试过,发现回调效果比较好,不会

  • 问题内容: 我使用标准技巧来自定义交互式Python会话: 现在,我得到上下文相关的完成和颜色提示。 问题来自颜色提示-当我在交互式Python会话中调用 history-search-backward (通过按)时,Readline考虑了终端转义序列,因此光标位置计算错误并且文本显示错误。 在Bash手册页中,通过特殊标记提到并解决了此问题: 如何解决此问题的Python提示? 问题答案: 我打

  • 我有一个白色的图像,我用作为一个div的背景,我想颜色匹配的主题主色。我知道我能做到: 并循环遍历以查找颜色,但是否可以提前计算此值?鉴于指定的十六进制值相当暗,我想我还需要包含过滤器。 给定十六进制值为 我需要执行哪些数学运算来计算所需的和值,以将白色背景图像转换为相同的颜色? 这是一个的片段,其中白色背景图像被过滤为绿色。这里的技巧是,正在过滤的是整个,而不仅仅是图像。如果我要在中输入一些文本

  • 我正在使用RangeSeekBar为3种情况设置一些值(即绿色=OK,琥珀色=警告,红色=撤离)...我正在使用xml绘图来设置背景 我知道我可以通过编程更改渐变,但如何缩小起始颜色并增加结束颜色?有人能解决这个问题吗? 谢谢

  • 我已经改变了我的应用程序的状态栏颜色为白色后,这个状态栏图标是不可见的。