2011-03-25 8 views
8

सिस्टम में रंगों को सॉर्ट करने का सबसे तेज़/आसान तरीका क्या है। मीडिया। रंग दृश्यमान स्पेक्ट्रम में इसकी स्थिति के अनुसार (लाल से नीला या नीला लाल रंग ' टी बात)?सॉर्ट सिस्टम। मीडिया। दृश्यमान स्पेक्ट्रम में स्थिति के अनुसार रंग

संपादित करें:

enter image description here

यह शायद तकनीकी रूप से सही है लेकिन देखने में यह अभी भी नहीं है:

यहाँ प्रकार (hue-> saturation-> चमक) का परिणाम है। क्या कोई समस्या पर प्रकाश डाल सकता है?

+0

एक आयामी अनुक्रम में लगातार तीन आयामी (रंग) स्थान का प्रतिनिधित्व करना असंभव है। आप वास्तव में क्या हासिल करने की कोशिश कर रहे हैं? –

+0

अच्छा धन्यवाद। वास्तव में मुझे क्या पता होना चाहिए था। मैंने अन्यथा सोचा। – NVM

उत्तर

4

आप रंगों को रंग से सॉर्ट करना चाहते हैं, ऐसा लगता है। ऐसा करने के लिए, आपको रंग के रंग की गणना करने की आवश्यकता है, और 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 संदर्भ की आवश्यकता होगी। इस तरह के तरीके धीमे होते हैं और बहुत से सैनिटी जांच करते हैं, इसलिए यदि प्रदर्शन महत्वपूर्ण है तो यह कम आकर्षक होने की संभावना है।

रंगस्थान त्रि-आयामी है। यद्यपि आप एक दिशा (जैसे ह्यू, यहां) के साथ सॉर्ट कर सकते हैं, रंगों के परिणामी अनुक्रम केवल तभी दिखाई देंगे जब आप अन्य दो दिशाओं (एचएसबी मॉडल में संतृप्ति और चमक) को स्थिर रखते हैं। यही कारण है कि अधिकांश रंग-पिकर्स एक द्वि-आयामी प्रतिनिधित्व का चयन करते हैं, लेकिन तब भी, आपको निरंतर ढाल बनाए रखने के लिए किसी दिए गए रंग पिकर के भीतर एक आयाम निरंतर छोड़ना होगा।

+0

मैं जोड़ूंगा कि वह मोनो से GetHue के कोड को "बस" उधार ले सकता है और एक विस्तार विधि बना सकता है। वह जो कर रहा है उसकी एकमात्र समस्या यह है कि वह एक गणना कॉलम पर सॉर्ट कर रहा है (हाँ, यह समयपूर्व अनुकूलन है)। – xanatos

+0

वैसे यह काम करता है लेकिन पूरी तरह से नहीं। इसे एक उत्तर के रूप में 'अनमार्किंग' करें। – NVM

+0

वैसे यह मेरे प्रश्न का उत्तर देता है। हालांकि मैं कुछ असंभव कोशिश कर रहा था! – NVM

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