我该如何比较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

回到顶部