我该如何比较Java中的颜色?
我试图制作一个随机的颜色生成器,但我不希望在arrayList中显示类似的颜色
public class RandomColorGen {public static Color RandColor() {
Random rand = new Random();
float r = rand.nextFloat();
float g = rand.nextFloat();
float b = rand.nextFloat();
Color c = new Color(r, g, b, 1);
return c;
}
public static ArrayList<Color> ColorList(int numOfColors) {
ArrayList<Color> colorList = new ArrayList<Color>();
for (int i = 0; i < numOfColors; i++) {
Color c = RandColor();
if(similarcolors){
dont add
}
colorList.add(c);
}
return colorList;
}
}
我真的很困惑,请帮助:)
回答:
在Color类中实现相似方法。
然后使用:
public static ArrayList<Color> ColorList(int numOfColors) { ArrayList<Color> colorList = new ArrayList<Color>();
for (int i = 0; i < numOfColors; i++) {
Color c = RandColor();
boolean similarFound = false;
for(Color color : colorList){
if(color.similarTo(c)){
similarFound = true;
break;
}
}
if(!similarFound){
colorList.add(c);
}
}
return colorList;
}
要实现likeTo:
看一下RGBA颜色空间中的颜色相似度/距离,并以编程方式找到相似的颜色。一种简单的方法可以是:
((r2-r1)2 +(g2-g1)2 +(b2-b1)2)1/2
和:
boolean similarTo(Color c){ double distance = (c.r - this.r)*(c.r - this.r) + (c.g - this.g)*(c.g - this.g) + (c.b - this.b)*(c.b - this.b)
if(distance > X){
return true;
}else{
return false;
}
}
但是,您应该根据类似的想象找到X。
以上是 我该如何比较Java中的颜色? 的全部内容, 来源链接: utcz.com/qa/407096.html