क्या संभावित तत्वों की संख्या उचित कम है? एक त्वरित और आसान समाधान आइटम की आईडी का उपयोग करके रंग मानों की एक सरणी को स्टोर करना है। यह मानता है कि आपके पास अपेक्षाकृत कम मात्रा में रंग हैं, और आप निश्चित हैं कि आप कुछ निश्चित वस्तुओं से ऊपर नहीं जाएंगे।
यदि आप किसी सूची का उपयोग करने के बजाय रंग उत्पन्न करना चाहते हैं, तो उन्हें एक सतत और सभ्य रूप से देखने के लिए एक चाल है जो उन्हें एचएसबी का उपयोग करके उत्पन्न करना है। एक चमक और संतृप्ति को पूर्व परिभाषित करें, फिर आईडी के कुछ फ़ंक्शन से रंग मूल्य को आधार दें (यह विभिन्न प्रकार की चीजें हो सकती है कि आप कितने आईडी की योजना बना रहे हैं, लेकिन कुछ राशि से आईडी गुणा करना (और जब यह अधिक हो जाता है तो मॉडलिंग 255!) एक अच्छा मोटा दृष्टिकोण है। इस दृष्टिकोण के साथ रंग संतृप्ति और चमक के मामले में सभी "संरेखित" होंगे, लेकिन उनमें से प्रत्येक का एक अलग रंग होगा।
मैं काम पर थोड़ा ऊब गया हूं, इसलिए मैं एक साथ मार पड़ी है एक तेजी से समाधान:।
class HsbColor
{
public int Hue { get; set; }
public int Saturation { get; set; }
public int Brightness { get; set; }
public Color ToRGB
{
// left as exercise to the reader...
}
}
public class Item
{
public int Id { get; set; }
private static const byte EXPECTED_MAX = 15;
private static int HUE_FACTOR = 255/EXPECTED_MAX;
public HsbColor Color
{
get {
var color = new HsbColor() { Saturation = 175, Brightness = 175 };
color.Hue = (Id * HUE_FACTOR) % 255;
return color;
}
}
}
स्रोत
2009-07-22 21:14:09
एक तरह से EXPECTED_MAX की भविष्यवाणी से बचने के लिए और अभी भी पाने के लिए एक और भी वितरण के लिए मेरा उत्तर देखें। –