WPF में चयन ब्रश रंग की गणना




colors textbox (2)

मैंने ध्यान दिया है कि लाल रंग में डब्ल्यूपीएफ में एक टेक्स्ट बॉक्स का चयन करते समय, और रंग को सत्यापित करने के लिए रंग पिकर का उपयोग करते हुए, रंग # एफएफ 99 99 तक फीका

मेरा एक विशिष्ट रंग मेरे चयन ब्रश के लिए आवश्यक है I क्या चयन करने के लिए एक रास्ता है कि मैं किस चयन को चुना जाना चाहूंगा, जब पाठ का चयन किया जाए तो सटीक रंग प्रदर्शित होता है?

वर्तमान में मुझे चयन ब्रश # ​​6599 डी 1 की आवश्यकता है, लेकिन एक बार सेट होने पर, रंग # C1D6ED है

मैं शुरुआती रंग की गणना कैसे कर सकता हूं, इसलिए आखिरकार रंग मुझे क्या चाहिए?


अच्छा सवाल है लेकिन मुझे लगता है कि यह असंभव है अगर ControlTemplate के अंदर कुछ उपरिशायी है तो आप किसी फ़ंक्शन को तैयार नहीं कर सकते हैं जो गहरे रंग की गणना करता है जो तब इच्छित रंग के रूप में समाप्त होगा।

जैसे जब आप लाल रंग में इनपुट करते हैं: 255,153,153 आपको 255,153,153 , जो अब आपके प्रारंभिक रंग पर लागू करने की आवश्यकता होती है, उसे लाल को अंधेरे की आवश्यकता होगी, यह निश्चित रूप से केवल लाल चैनल में ही ग्रीन के रूप में किया जा सकता है और नीले पहले से ही शून्य हैं समस्या लाल चैनल नहीं है (जो कि 255 के रूप में समाप्त होती है और इसलिए प्रभावित नहीं होती है), इसलिए उसमें कोई भी परिवर्तन केवल रंग को और भी अधिक के लिए अंधेरा होने के बजाय,

संपादित करें: इसे थोड़ा अधिक गणितीय बनाने के लिए, फ़ंक्शन जो चयन की पारदर्शिता द्वारा लागू किया जाता है:

एफ (एक्स) = 0.4x + 153

यदि आप इसे अपने रंग के सभी चैनलों पर लागू करते हैं, तो आप देखेंगे कि यह वास्तव में मामला है। अब हम अपने मूल्यों को कैसे प्राप्त कर सकते हैं? काफी सरल, हम फ़ंक्शन को उलटा देते हैं, जो यह है:

एफ ^ (- 1) (x) = -2.5 (153.0 - x)

महान! अब अपने रंग पर लागू होते हैं:

आर: -130.0
जी: 0
बी: 140

हम्म, इतने महान नहीं कि मुझे लगता है

यह ऋणात्मक मूल्य वास्तव में यही क्यों हमेशा संभव नहीं है, हर रंग जिसमें 153 से कम घटक हैं, प्रतिवर्ती नहीं हैं।


एचबी द्वारा जवाब पर निम्नलिखित

मैंने अतीत में निम्नलिखित सूत्र के साथ अस्पष्टता की गणना की है

Red = OriginalRed * Opacity + (1-Opacity) * BackgroundRed

जो करने के लिए inverts

(Red - (1-Opacity) * BackgroundRed) / Opacity = OriginalRed

TextBox में डिफ़ॉल्ट Background को व्हाइट और SelectionOpacity सेट किया गया है, जो 0.4 पर है।
जैसा कि एचबी ने बताया, आप इन डिफ़ॉल्ट सेटिंग्स के साथ अपने रंग को प्राप्त नहीं कर सकते क्योंकि लाल मूल्य -130 के रूप में आ जाएगा। यह आपको 3 विकल्पों के साथ छोड़ देता है, Background बदलें, SelectionOpacity विकल्प को बदलता है या ऐसा मत करो :)

TextBox Background परिवर्तित करना संभवतः ऐसा कुछ नहीं है जिसे आप ऐसा करना चाहते हैं जिससे विकल्प 2 SelectionOpacity , SelectionOpacity विकल्प बदल दें

हम लाल को 0 से नीचे नहीं जाना चाहते

(101 - (1-Opacity) * 255) = 0

जो देता है

1 - (101/255) = Opacity

इसका परिणाम 0,604 में होता है, इसलिए इस SelectionOpacity #0056B3 वैल्यू के साथ आप गणना कर सकते हैं कि SelectionBrush #0056B3 को #0056B3 पर सेट किया जाना चाहिए, जब अपारदर्शिता लागू हो जाने पर #6599D1 हो #6599D1

यहां बताया गया है कि TextBox इन मानों के साथ कैसे दिखता है

<TextBox SelectionBrush="#0056B3"
         SelectionOpacity="0.604" />







brush