【发布时间】:2014-10-08 00:22:57
【问题描述】:
我的目标是生成一些人们容易看到的独特随机颜色。这意味着我尽量避免同时拥有海蓝色和天蓝色。我更喜欢紫红色和海蓝色。
我认为我需要有一个变量,它将成为任何生成的 RGB 之间的“间隙”。例如,如果gap为60,那么第一种和第二种颜色不能是RGB(12,27,38)和RGB(45,102,177),因为红色值的差异小于60。(45-12=33)。
这是我迄今为止尝试过的:
int temp;
for(int i = 0; i < size; i++)
{
Rectangle r = new Rectangle();
temp = COLOR_LIMIT - colourGap;
if(i == 0 || temp <= 0)
colour = Color.argb(255, randomColour.nextInt(COLOR_LIMIT), randomColour.nextInt(COLOR_LIMIT), randomColour.nextInt(COLOR_LIMIT));
else
colour = Color.argb(255, randomColour.nextInt(temp), randomColour.nextInt(temp), randomColour.nextInt(temp));
temp-=colourGap;
}
通过上面的代码,我意识到生成的颜色与基本随机相比更加独特。但是,我上面的代码并不灵活,只是一个临时修复(我需要每次都使用迭代大小和间隙变量)。我相信应该有任何聪明的方法来做到这一点。基本上,我只是不断将限制减少 60,如果限制小于或等于 0,那么我只生成一个基本的随机颜色。
感谢任何帮助,抱歉英语不是我的母语。
非常感谢。
【问题讨论】:
-
看看这是否有帮助:en.wikipedia.org/wiki/Hue
标签: java android random colors