2010-11-03 15 views

उत्तर

15

रिच न्यूमैन ने एचएसएलकॉलर क्लास बनाया है जिसका उपयोग सिस्टम.ड्राइंग.कॉलर के स्थान पर किया जा सकता है।

http://richnewman.wordpress.com/hslcolor-class/

+2

यह कक्षा * अधिकांश समय * काम करने लगती है। मुझे एक समस्या है जहां मेरे पास एक एचएसएल रंग (210,45,72) है जो एक नीली आउटपुट आरजीबी (90,62,83) है जो लाल है। मैं अपने ब्लॉग पर जाने की कोशिश कर रहा हूं लेकिन यह लगभग कभी भी लोड नहीं करता है। – Sinaesthetic

+3

यह कक्षा रंग का उपयोग करती है। गेटब्राइटनेस विधि, इसलिए यह वास्तव में [एचएसबी] प्रस्तुत करता है (http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC36) रंग स्थान, एचएसएल नहीं। – ironic

+1

# bbe30a और # 320ae3 के लिए काम नहीं करता है। मैंने केवल दो मानों की कोशिश की और इसे प्राप्त किया। – aloisdg

10

अपने कोड फ़ाइल में नामस्थान "का उपयोग" के लिए नीचे निम्न पंक्ति जोड़ें:

using System.Runtime.InteropServices 

और पी/आह्वान, निम्नलिखित समारोह जोड़ने के साथ:

[DllImport("shlwapi.dll")] 
public static extern int ColorHLSToRGB(int H, int L, int S); 

किसी भी कक्षा में आप अपनी परियोजना में चाहते हैं।

यदि आपके पास रंग, रंग और संतृप्ति पूर्णांक के रूप में रंग है, तो इन मानों को उस कार्य को दें, और वांछित आरजीबी रंग पूर्णांक के रूप में वापस कर दिया जाएगा। फिर ColorTranslator.FromWin32 का उपयोग सिस्टम के पूर्णांक के रूप में लौटा आरजीबी रंग का अनुवाद करने के लिए करें। ड्रॉइंग। रंग संरचना।

एक और तरीका है Color.FromArgb (Int32) अधिभार विधि का उपयोग करने, रंग आपको लगता है कि पूर्णांक से System.Drawing.Color संरचना के रूप में चाहते हैं बनाने के लिए है।

एक और तरीका हैColorConverter वर्ग का एक उदाहरण बनाने के लिए, और फिर फोन ConvertFrom विधि, और यह दे आरजीबी रंग पूर्णांक ColorHLSToRGB समारोह से लौट आए, या एक ही पहले से ConvertTo विधि कॉल है तर्क, लेकिन दूसरे तर्क इनपुट typeof(System.Drawing.Color) में। फिर लौटे ऑब्जेक्ट को System.Drawing.Color संरचना प्रकार में कनवर्ट करें।

परिणाम वही है जो आप खोज रहे हैं और उम्मीद कर रहे हैं!

आप आरजीबी रंग को सिस्टम के पूर्णांक के रूप में परिवर्तित करने के तरीके के बारे में अन्य एल्गोरिदम या तरीकों को भी खोज सकते हैं, खोज सकते हैं और सीख सकते हैं। ड्रॉइंग। रंग संरचना या एचएलएस मानों को तीन पूर्णांक के रूप में कैसे परिवर्तित करें सिस्टम। ड्रॉइंग। रंग संरचना!

+2

कुछ चीजों को ध्यान में रखना: 'एच',' एल' और 'एस' 0 से 240 तक जाते हैं। ध्यान रखें कि 0 का चमकदार काला का मतलब है, और 240 का मतलब सफेद है, इसलिए यदि आप शुद्ध रंग चाहते हैं (जैसे '# F00') आपको' एल' 120 सेट करने की आवश्यकता है। ध्यान देने योग्य भी: यदि आप 'Color.FromArgb (Int32)' अधिभार का उपयोग करने जा रहे हैं, तो रंग का अल्फा 0 होगा, जिसका अर्थ है कि यह ' पारदर्शी हो जाएगा। 'ColorTranslator.FromWin32()' में उस समस्या नहीं है। – Nolonar

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