java – 如何动态计算颜色列表?
发布时间:2020-12-14 23:47:14 所属栏目:Java 来源:网络整理
导读:为了在GWT-Widget中表示具有不同颜色的对象列表,我们需要动态获得具有与对象不同颜色的颜色列表.由于List的大小可能不同,我们需要能够计算这样的颜色列表. 解决方法 我的解决方案的另一个版本有范围: Listint getUniqueColors(int amount) { final int lowe
为了在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 – 对某些异常重新尝试方法
- java – 在布局JScrollPane时何时调用getPreferredScrollab
- Java ClassLoader授权模型?
- java – 为什么ArrayStoreException是RuntimeException?
- 在RxJava中,RxJavaPlugins.setErrorHandler和Subscribe onE
- [Comet OJ - Contest #6 D][48D 2280]另一道树题_并查集
- 浅谈将JNI库打包入jar文件
- Java正则表达式实现在文本中匹配查找换行符的方法【经典实例
- JSP Response.addHeader()方法:添加HTTP文件头信息
- 笔记:第七讲Swing用户界面设计