अच्छा सवाल है लेकिन मुझे लगता है कि यह असंभव है। यदि ControlTemplate के अंदर कुछ ओवरले है तो आप एक फ़ंक्शन को तैयार नहीं कर सकते हैं जो एक गहरे रंग की गणना करता है जो तब इच्छित रंग के रूप में समाप्त हो जाएगा।
उदा। जब आप लाल इनपुट करते हैं: 255,0,0
आपको 255,153,153
मिलता है, अब आपके प्रारंभिक रंग पर लागू होने वाली फ़ंक्शन को लाल रंग को अंधेरे करने की आवश्यकता होगी, यह निश्चित रूप से केवल लाल चैनल में किया जा सकता है क्योंकि हरा और नीला पहले से शून्य है । समस्या लाल चैनल नहीं है (जो 255 के रूप में समाप्त होती है और इसलिए प्रभावित नहीं होती है), इसलिए इसमें कोई भी परिवर्तन केवल अंधेरे के बजाय रंग को और भी निराश करने के लिए काम करेगा।
संपादित करें: इस में थोड़ा और अधिक mathmatical बनाने के लिए, समारोह है कि चयन की पारदर्शिता से लागू किया जाता है:
f (x) = 0.4x + 153
यदि आप इसे अपने रंग के सभी चैनलों पर लागू करते हैं तो आप देखेंगे कि यह वास्तव में मामला है। अब हम उन मूल्यों को कैसे प्राप्त करते हैं जिन्हें हम चाहते हैं? काफी सरल है, हम समारोह है, जो इस है उलटने:
च^(- 1) (x) = -2.5 (153.0 - एक्स)
वाह! अब आप अपने रंग के लिए लागू होने वाले कर सकते हैं:
आर: -130.0
जी: 0
बी: 140
हम्म, सब के बाद इतना महान नहीं मैं लगता है।
यह नकारात्मक मान बिल्कुल सही क्यों नहीं है, प्रत्येक रंग जिसमें 153
से नीचे घटक हैं, उलट नहीं है।
स्रोत
2011-08-11 16:37:01
साथ
TextBox
देखो आप कोड आप रंग सेट करने के लिए प्रयोग किया जाता दे सकते है? – Jakubमुझे संदेह है कि आपका रंग semitransparent बनाया जा रहा है, और आपको इसे अपारदर्शी बनाने की आवश्यकता है। यह देखने के बिना कि आप रंग कैसे बदल रहे हैं, मेरे पास उससे अधिक सुझाव देने का कोई आसान तरीका नहीं है। –
यदि आप अत्यधिक कस्टम शैली करने की कोशिश कर रहे हैं तो मदद नहीं करता है, लेकिन मैं सिस्टम डिफ़ॉल्ट रंग छोड़ना पसंद करता हूं, और कस्टम नियंत्रण बनाते समय, समान संदर्भों से सिस्टम डिफ़ॉल्ट रंग उधार लेता हूं। यह विंडो के एक्सेसिबिलिटी मोड के साथ संगतता के लिए सहायक है, और इसे बनाता है ताकि उपयोगकर्ता खिड़की की थीम क्षमताओं का उपयोग बिना खराब दृश्य संघर्ष के कर सकें। –