【发布时间】:2014-10-22 19:08:28
【问题描述】:
我想生成/随机化一种颜色,然后我想要第二个接近生成的颜色。 这就是我生成颜色 ftm 的方式:
Paint colors = new Paint();
int red = ran.nextInt(256-100)+100;
int green = ran.nextInt(256-100)+100;
int blue = ran.nextInt(256-100)+100;
colors.setARGB(255, red, green, blue);
后来我生成的第二种颜色是这样的:
switch (ran.nextInt(3)) {
case 0:
red = red - (40 - level);
break;
case 1:
green = green - (40 - level);
break;
default:
blue = blue - (40-level);
break;
}
问题是它在某些情况下有效,有时它可以给我一种相差几英里的第二种颜色。 还有其他更好更简单的方法来生成这些颜色吗?
br
【问题讨论】:
-
还有其他颜色空间,例如 hsv,它们更适合用于产生“相似”颜色的操作。
-
@MarcB +1 ...和 tinyColor.js 轻松在 rgb 和 hsl 之间转换:bgrins.github.io/TinyColor/docs/tinycolor.html