2012-12-20 16 views
19

में स्वचालित डार्क/लाइट आइकन समर्थन मुझे लगता है कि यह एक बहुत ही आम समस्या है, लेकिन मुझे मेरे लिए उपयुक्त समाधान नहीं मिल रहा है। जैसा कि आप सभी जानते हैं, डब्ल्यूपी एक अंधेरे और हल्की थीम का समर्थन करता है। उपयोगकर्ता विषय बदल सकता है और आपके निर्णय को ओवरराइड करने और आपके द्वारा चुने गए रंगीन थीम में सबकुछ प्रदर्शित करने के तरीके हैं। हालांकि, मैं बस इन दो थीम प्रकारों पर प्रतिक्रिया करने की कोशिश कर रहा हूं और मैं सही रंग में आइकन प्रदर्शित करना चाहता हूं।विंडोज फोन 8

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

सामान्य छवियों के लिए कोई समर्थन क्यों नहीं है? उदाहरण के लिए: मैं एक टेलीफोन आइकन प्रदर्शित करना चाहता हूं। मैंने अंतर्निहित आइकनों में से एक को चुना है और इसे माइक्रोसॉफ्ट एसडीके फ़ोल्डर से मेरी परियोजना के छवि फ़ोल्डर में कॉपी किया है। यदि उपयोगकर्ता अंधेरे विषय का उपयोग करता है, तो सब ठीक हो जाएगा क्योंकि सफेद पृष्ठभूमि आइकन सफेद पृष्ठभूमि पर दिखाई देगा। लेकिन अगर वह प्रकाश विषय पर स्विच करता है, तो आइकन अदृश्य हो जाएगा क्योंकि यह सफेद पर सफेद है।

मैं टेक्स्टबॉक्स या पृष्ठभूमि रंगों के लिए शैली संसाधनों से पूरी तरह से अवगत हूं, जो फोन के उच्चारण या थीम रंग का उपयोग करते हैं। लेकिन ऐसा क्यों है कि सरल आइकन के लिए कोई समर्थन नहीं है जिसे मैंने अपने एक्सएएमएल पेज पर छवि के रूप में जोड़ा है?

बेशक मैं पृष्ठ के निर्माता में पता लगा सकता हूं यदि उपयोगकर्ता अंधेरे या हल्के मोड में है। फिर मैं टेलीफोन आइकन का काला या सफेद संस्करण लोड करूंगा। लेकिन जब भी मैं पृष्ठ पर जाता हूं और सब कुछ धीमा कर देता हूं तो यह चेक किया जाएगा। हर बार जब मैं विषय जागरूक छवि जोड़ रहा हूं, तो विषय के लिए चेक को मैन्युअल रूप से चेक करना भी परेशान है।

क्या कोई समाधान है, जो केवल एक्सएएमएल के साथ काम करेगा? या कम से कम बनाए रखने के लिए आसान है? और मैं शुरुआत से ही एसडीके से निर्मित छवियों का उपयोग क्यों नहीं कर सकता? वे पहले से ही अंधेरे और हल्के संस्करणों में उपलब्ध हैं और पहले से ही एप्लिकेशन बार में उपयोग किए जा रहे हैं।

+0

संभावित डुप्लिकेट [मैं WP7 sdk के साथ प्रदान किए गए आइकन का उपयोग कैसे करूं?] (Http://stackoverflow.com/questions/3919882/how-do-i-use-the-icons-provided-with- द-डब्ल्यूपी 7-एसडीके-ठीक से) –

+1

हां मैंने यह प्रश्न भी देखा है, लेकिन मैं opacityMask का उपयोग करके समाधान से बचना चाहता हूं और प्रत्येक बटन स्थिति को परिभाषित करना चाहता हूं (यदि मैं एक क्लिक करने योग्य के रूप में छवि का उपयोग कर रहा हूं) –

उत्तर

36

यदि आप आइकन को एक्शनबार में काम करना चाहते हैं, तो बस सफेद (यदि अंधेरा थीम) और काला (यदि हल्की थीम) हो तो आप छवि को आयताकार मुखौटा के रूप में एक आयताकार में जोड़ सकते हैं, जैसे:

<Rectangle Fill="{StaticResource PhoneForegroundBrush}" Width="48" Height="48" > 
    <Rectangle.OpacityMask> 
     <ImageBrush ImageSource="/Images/my.icon.png" /> 
    </Rectangle.OpacityMask> 
</Rectangle> 

जहां my.icon.png एक सफेद छवि है, जैसे कि आप एक्शनबार के लिए चुन सकते हैं।

+0

यही वह है! न्यूनतम प्रयास और अधिकतम परिणाम :) हालांकि मैंने सोचा था कि ओपेसिमामास्क रास्ता अधिक जटिल होगा, यह केवल काले/सफेद आइकन के लिए एकदम सही फिट प्रतीत होता है। क्या आयताकार और ओपेसिटीमास्क का यह संयोजन एक शैली परिभाषा में उपयोग किया जा सकता है? मैं एक एकल शैली बनाना चाहता हूं जिसका उपयोग पूरे आइकन में मेरे द्वारा उपयोग किए जाने वाले सभी आइकनों के लिए किया जा सकता है। एक और सवाल: विभिन्न रंग छवियों के बारे में क्या? तब मैं एर्नो के समाधान के साथ जाऊंगा, क्योंकि यह केवल काले और सफेद छवियों के लिए है। –

+1

पूरी तरह से कमाल, मैंने इस तीन बार अब उपयोग किया है और हर बार मुझे इसे फिर से Google करना होगा :) –

+0

विंडोज फोन 8.1 (WinRT) के बारे में कैसे? –

0

आप एक व्हाइट फोरग्राउंड आइकन का उपयोग करते हैं। यह लाइट और डार्क थीम दोनों के लिए उपयुक्त है। जो कुछ मैं कर रहा हूं वह है।

+2

एचएम? यदि आप सफेद पृष्ठभूमि पर एक सफेद आइकन का उपयोग करते हैं, तो आप कुछ भी नहीं देखेंगे ... सफेद आइकन के पीछे कम से कम एक हल्की भूरे रंग की पृष्ठभूमि होनी चाहिए ताकि अन्य कुछ भी देखने के लिए, अन्यथा controst बहुत कम होगा। –

3

आप बिटमैप आइकन के बजाय वेक्टर ग्राफिक्स का उपयोग कर सकते हैं और उन्हें आकर्षित करने के लिए थीम-जागरूक ब्रश का उपयोग कर सकते हैं।

यदि आप चाहते हैं कि ऐप थीम के स्विच का जवाब दे, तो आपको इसे किसी भी तरह से जवाब देना होगा।

मैंने अपने दृश्यों की मूल श्रेणी में एक संपत्ति जोड़ा जो चयनित विषय देता है। इस तरह से मैं उस मूल्य का उपयोग/बाध्य कर सकता हूं।

वैल्यू कनवर्टर का उपयोग करना भी संभव है जो एक संसाधन विशिष्ट संसाधन के नाम पर किसी संसाधन का लॉजिकल नाम बदल देता है। Custom light/dark theme resources on Windows Phone 7

+0

मैं नए ग्राफिक्स बनाना नहीं चाहता, क्योंकि निर्मित मेरे लिए पर्याप्त है। लेकिन मैंने xaml में वेक्टर ग्राफ़िक बनाने के तरीके के बारे में निर्देश देखे हैं जिनका उपयोग किया जा सकता है। लेकिन यह फिर से बहुत अधिक काम है, खासकर जब ग्राफिक्स पहले से मौजूद हैं:/मैंने कनवर्टर समाधान की कोशिश की है लेकिन सफल नहीं हुआ। लेकिन यह मेरी आंखों में सबसे व्यावहारिक समाधान प्रतीत होता है। क्या आप मुझे एक उदाहरण दे सकते हैं कि आपने इस समस्या को अपने विचारों में कैसे हल किया? –

+0

मैंने एक बहुत ही उपयोगी लिंक जोड़ा जो आपको अलग संसाधन फ़ाइलों में प्रकाश और अंधेरे संसाधनों को रखने और उन्हें लोड करने की अनुमति देता है। –

+0

मैंने आपके लिंक को आज़माया, लेकिन मैं ThemeResourceDictionary जोड़ने के साथ फंस गया हूं। या तो यह नामस्थान में मौजूद नहीं है या "प्रत्येक शब्दकोश प्रविष्टि में एक संबद्ध कुंजी होनी चाहिए"। –

0

Coding 4 Fun नियंत्रण टूलकिट एक दौर बटन है कि विषय के आधार पर अग्रभूमि रंग को अद्यतन करने सहित आवेदन बार बटन, नकल में शामिल हैं:

संपादित

इस पर एक नजर डालें। कोड ओपन सोर्स है, इसलिए शायद आपको वहां एक जवाब मिल सकता है। या, एक हैक के रूप में, आप RoundButton नियंत्रण का उपयोग कर सकते हैं, सीमा बंद कर सकते हैं, और Click ईवेंट प्रदान नहीं कर सकते हैं।

1

विषय का पता लगाएं (Supporting dark and light themes इसके लिए सबसे अच्छा समाधान देता है, मुझे लगता है), और उसके बाद छवि को तदनुसार सेट करें। यदि आप इसे बहुत कुछ करते हैं, तो एक कस्टम नियंत्रण जहां आप दो छवि स्रोतों की आपूर्ति कर सकते हैं और सही एक का उपयोग किया जाता है, इसे बनाने में काफी आसान होगा।

संपादित करें: इस विषय पर एक और अच्छा लेख है। New Screen Resolutions

+0

जैसा कि मैंने अपने मूल प्रश्न में लिखा है: मैं ऐसे समाधान की तलाश में हूं जिसके लिए कोड की आवश्यकता नहीं है जो तय करता है कि कौन सी छवि लोड की जानी चाहिए और असाइन की जानी चाहिए। –

+0

यह एक कार्यक्रम है। सब कुछ कोड की आवश्यकता है। ;) आवश्यक कोड को XAML मार्कअप द्वारा पुन: प्रयोज्य में आसानी से लपेटा जा सकता है। मैंने सुझाव दिया कि। – wekempf

+0

हां यह सही है, लेकिन मैं मूल कक्षाओं और कार्यक्षमता के लिए जितना संभव हो उतना करीब रहना चाहता था। निश्चित रूप से अपने स्वयं के नियंत्रण लिखना संभव है जो आपकी ज़रूरतों का ख्याल रखता है लेकिन मैं जोहान फाल्क द्वारा सुझाए गए एक साधारण समाधान की तलाश में था :) मैं अभी भी समझ नहीं पा रहा हूं कि पाठ और एप्लिकेशन बार आइकन के लिए केवल थीम समर्थन क्यों है और पूरे नहीं प्रणाली। –

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