2011-10-10 11 views
5

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

  1. ब्रश के अल्फा चैनल को सेट करें। जैसे #12FFFFFF
  2. ब्रश को 100% सफेद के रूप में छोड़कर, फ्रेमवर्क एलिमेंट की अस्पष्टता सेट करें।

इसके अलावा, क्या WPF (4.0) और सिल्वरलाइट के बीच उत्तर अलग है?

+0

एमएसडीएन से [दस्तावेज़ीकरण] (http://msdn.microsoft.com/en-us/library/bb613584.aspx#Opacity) – dowhilefor

उत्तर

6
MSDN से सीधे

: तत्वों

आप एक ब्रश भरें या एक तत्व की स्ट्रोक सेट करने के लिए उपयोग करते हैं पर अस्पष्टता बनाम ब्रश पर

अपारदर्शिता, यह ब्रश सेट करने के लिए बेहतर है तत्व की अस्पष्टता संपत्ति को सेट करने के बजाय ओपेसिटी मान। किसी तत्व की अस्पष्टता संपत्ति को संशोधित करना WPF को अस्थायी सतह बनाने का कारण बन सकता है।

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

+0

Awrite केंट;) –

+0

ग्रीट्स! आशा है कि बीसी में सब ठीक है। –

+0

हाँ अब तक बहुत अच्छा –

0

यह आप (ऊपर प्रकार के) प्रदर्शित करने के लिए कितने वस्तुओं जा रहे हैं, कैसे ब्रश आदि बनाई गई है पर निर्भर करता है ...

उदाहरण के लिए, ब्रश एक StaticResource के रूप में 1 उदाहरण में सेट किया गया है फिर यह एक बार बनाया जाता है, जबकि यदि यह एक स्ट्रिंग पृष्ठभूमि = "# 12FFFFFF" के रूप में सेट किया गया है तो यह ऑब्जेक्ट के प्रति तत्कालता के बाद बनाया जाएगा। उस अकेले प्रदर्शन का प्रभाव होगा, हालांकि नगण्य

ब्रश का उपयोग करना। हाइट और सेटिंग अस्पष्टता का अर्थ है कि आप ब्रश (व्हाइट) और अस्पष्टता स्थिरता के एक स्थिर आवृत्ति का उपयोग करेंगे ताकि आप कम ऑब्जेक्ट्स बना सकें।

दिमाग को खोजने का सबसे अच्छा तरीका एक विशिष्ट परीक्षण है - क्या आपने कोई प्रोफाइलिंग किया है?

संपादित करें: मुझे जोड़ना चाहिए यदि आप केवल उपर्युक्त वस्तुओं में से कुछ बना रहे हैं, मुझे नहीं लगता कि आपको प्रदर्शन के बारे में चिंता की आवश्यकता है। 1000 के लिए हालांकि एक विशिष्ट परीक्षण बुद्धिमान होगा

+0

धन्यवाद। इस मामले में यह काफी जटिल ड्राइंग के लिए है जिसमें बहुत सारी ज्यामिति ड्रॉइंग ऑब्जेक्ट्स हैं। आपके उत्तर के लिए धन्यवाद। –

+0

मुझे लगता है कि आपको वर्चुअलाइजेशन का उपयोग करके अधिक महत्वपूर्ण प्रदर्शन सुधार मिल सकते हैं, या आप जिस प्राइमेटिव का उपयोग करने के लिए उपयोग करते हैं उसे समायोजित कर सकते हैं। क्या आपने ये लिंक देखा है? http://stackoverflow.com/questions/7710569/best-performing-class-for-drawing-in-wpf/7711139#7711139 http://stackoverflow.com/questions/7560922/improving-canvas- प्रदर्शन –

0

फ्रेमवर्क की अस्पष्टता सेट करना उस फ्रेमवर्क एलिमेंट के प्रत्येक बच्चे की अस्पष्टता सेट करेगा। यदि फ्रेमवर्क एलिमेंट में बच्चों (बटन, टेक्स्टबॉक्स, या कोई अन्य आइटम) होना चाहिए तो आपको विकल्प 1 के साथ जाना होगा।

यदि यह केवल एक सफेद आयताकार ओवरलेइंग है, तो मैं कहूंगा कि विकल्प 2 के लिए जाना है, क्योंकि यह आसान है एक ब्रश की तुलना में एक अस्पष्टता संपत्ति को एनिमेट करें, अगर आप अंततः इसे चाहते हैं।

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