2013-03-07 8 views
5

im एक यादृच्छिक रंग जनरेटर बनाने की कोशिश कर, लेकिन मैं न समान रंग 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; 
} 

} 

मैं वास्तव में भ्रमित कर रहा हूँ कृपया मदद :)

उत्तर

9

रंग वर्ग में समान() विधि लागू करें।

तब का उपयोग करें:

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; 
} 

similarTo को लागू करने के लिए:

Color similarity/distance in RGBA color space और finding similar colors programatically पर एक नजर डालें। एक साधारण तरीका हो सकता है:

((r2 - r1) + (G2 - G1) + (बी 2 - बी 1)) 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; 
    } 
} 

हालांकि, अगर आप इसी तरह की अपनी कल्पना के अनुसार अपने एक्स खोजना चाहिए।

0

चेक इस लिंक में दिखाने के लिए चाहते हैं।
How to match similar colours in Java using getRGB
आप इस विषय में रंग समानता के बारे में पा सकते हैं।

+0

यदि यह मदद करता है, तो यह -1 क्यों है? – Alex

+0

-1 के लिए कभी भी नहीं (इस पृष्ठ में प्रत्येक उत्तर -1 प्राप्त हुआ), लेकिन यदि आपको लगता है कि किसी अन्य प्रश्न में कोई मौजूदा उत्तर इस प्रश्न का उत्तर दे सकता है, तो इसे अगली बार डुप्लिकेट के रूप में चिह्नित करें। मुझे लगता है कि डाउनवोट का कारण है। @MichaelArdan – StarPinkER

4

मैं इस कोशिश की और यह बहुत अच्छी तरह से काम:

Color c1 = Color.WHITE; 
Color c2 = new Color(255,255,255); 

if(c1.getRGB() == c2.getRGB()) 
    System.out.println("true"); 
else 
    System.out.println("false"); 
} 

getRGB समारोह लाल नीली और हरी की राशि के साथ एक पूर्णांक मान देता है, तो हम पूर्णांकों तुलना कर रहे हैं वस्तुओं नहीं।

+3

यह सही हो सकता है लेकिन यह सवाल का जवाब नहीं देता है, जो समान रंगों को समान नहीं ढूंढने के लिए कह रहा है। – Synchro

संबंधित मुद्दे

 संबंधित मुद्दे