आप रंगों को रंग से सॉर्ट करना चाहते हैं, ऐसा लगता है। ऐसा करने के लिए, आपको रंग के रंग की गणना करने की आवश्यकता है, और Wpf System.Media.Color
संरचना में आपके लिए ऐसा करने के लिए गुण शामिल नहीं हैं।
आपके पास दो विकल्प है:
- आप मैन्युअल रूप से रंग की गणना कर सकते हैं। यह वास्तव में कठिन नहीं है, लेकिन यह गन्दा है: बहुत सारे अगर-तो बयान। नमूना कोड यह can be found on devx कर रहा है। यह अधिक काम और कम पठनीय है, लेकिन शायद तेज़ विकल्प।
- आप
System.Drawing.Color.GetHue
का उपयोग कर सकते हैं। पुराने Winforms-era System.Drawing
रंग संरचना रंग की गणना करने का समर्थन करता है। यह कोड वास्तव में सरल बनाता है; System.Drawing.Color.FromArgb(col.R, col.G, col.B).GetHue()
जैसे कुछ पर्याप्त होगा - अच्छा और छोटा! हालांकि, इसका मतलब यह है कि आप समान नामों के साथ दो structs से निपटेंगे और आपको निश्चित रूप से System.Drawing.dll
असेंबली ro संदर्भ की आवश्यकता होगी। इस तरह के तरीके धीमे होते हैं और बहुत से सैनिटी जांच करते हैं, इसलिए यदि प्रदर्शन महत्वपूर्ण है तो यह कम आकर्षक होने की संभावना है।
रंगस्थान त्रि-आयामी है। यद्यपि आप एक दिशा (जैसे ह्यू, यहां) के साथ सॉर्ट कर सकते हैं, रंगों के परिणामी अनुक्रम केवल तभी दिखाई देंगे जब आप अन्य दो दिशाओं (एचएसबी मॉडल में संतृप्ति और चमक) को स्थिर रखते हैं। यही कारण है कि अधिकांश रंग-पिकर्स एक द्वि-आयामी प्रतिनिधित्व का चयन करते हैं, लेकिन तब भी, आपको निरंतर ढाल बनाए रखने के लिए किसी दिए गए रंग पिकर के भीतर एक आयाम निरंतर छोड़ना होगा।
स्रोत
2011-03-25 09:54:03
एक आयामी अनुक्रम में लगातार तीन आयामी (रंग) स्थान का प्रतिनिधित्व करना असंभव है। आप वास्तव में क्या हासिल करने की कोशिश कर रहे हैं? –
अच्छा धन्यवाद। वास्तव में मुझे क्या पता होना चाहिए था। मैंने अन्यथा सोचा। – NVM