java – 如何动态计算颜色列表?

前端之家收集整理的这篇文章主要介绍了java – 如何动态计算颜色列表?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为了在GWT-Widget中表示具有不同颜色的对象列表,我们需要动态获得具有与对象不同颜色的颜色列表.由于List的大小可能不同,我们需要能够计算这样的颜色列表.

解决方法

我的解决方案的另一个版本有范围:
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那样).

通常我们将范围分成红色绿色和蓝色的3个子范围,计算我们需要迭代它们的步数(通过应用pow(范围,1f / 3))并迭代它们.

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

猜你在找的Java相关文章