我正在与AChart Engine合作。
并动态设置颜色。
这是我的代码,
private int getRandomColor() {
Random rnd = new Random();
int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
return color;
}
我的问题是我也会(随机)获得亮度颜色。
那么如何仅避免亮度颜色?
我的输出:
答案 0 :(得分:4)
您最好使用HSB(色相,饱和度,亮度)色彩空间而不是RGB色彩空间。您可以使用getHSBColor()代替硬编码饱和度和亮度来保持它们完全相同,只需随机化颜色。
private Color getRandomColor() {
Random rnd = new Random();
return Color.getHSBColor(rnd.nextFloat(), 0.5f, 0.5f);
}
答案 1 :(得分:2)
如果我理解正确并且你想要避免鲜艳的颜色,你必须改变这一行:
int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
到那些行:
int MAX_LEVEL = 128;
int color = Color.argb(255, rnd.nextInt(MAX_LEVEL), rnd.nextInt(MAX_LEVEL), rnd.nextInt(MAX_LEVEL));
这将导致仅生成更暗的颜色。
如果你只想要浅色,就这样做:
int BASE_LEVEL = 128;
int MAX_LEVEL = 128;
int color = Color.argb(255, BASE_LEVEL + rnd.nextInt(MAX_LEVEL), BASE_LEVEL + rnd.nextInt(MAX_LEVEL), BASE_LEVEL + rnd.nextInt(MAX_LEVEL));