2009-04-30 17 views

उत्तर

17

इसका कारण एंटी-एलियासिंग सिस्टम है जो एकाधिक पिक्सल पर लाइन फैलता है यदि यह भौतिक डिवाइस पिक्सल के साथ संरेखित नहीं होता है।

डब्ल्यूपीएफ स्वतंत्र पुनर्वसन है। इसका मतलब है कि आप इंच में उपयोगकर्ता इंटरफ़ेस तत्व का आकार निर्दिष्ट करते हैं, पिक्सल में नहीं। डब्ल्यूपीएफ में एक तार्किक इकाई एक इंच का 1/96 है। इस पैमाने को चुना जाता है, क्योंकि अधिकांश स्क्रीनों में 96 डीपीआई का संकल्प होता है। तो ज्यादातर मामलों में 1 लॉजिकल यूनिट 1 भौतिक पिक्सेल से मेल खाता है। लेकिन अगर स्क्रीन रिज़ॉल्यूशन बदलता है, तो यह नियम अब मान्य नहीं है।

सभी WPF नियंत्रण एक संपत्ति SnapsToDevicePixels प्रदान करते हैं। यदि सत्य पर सेट किया गया है, तो नियंत्रण सुनिश्चित करता है कि सभी किनारों को भौतिक डिवाइस पिक्सेल पर उत्कृष्ट रूप से खींचा जाता है। लेकिन दुर्भाग्य से यह सुविधा केवल नियंत्रण स्तर पर उपलब्ध है।

स्रोत: Draw lines excactly on physical device pixels

+0

ध्यान दें कि SnapToDevicePixels प्रॉपर्टी का टेक्स्ट ग्लाइफ पर कोई प्रभाव नहीं पड़ता है। मेरा मतलब यह देखने के लिए टेक्स्टब्लॉक पर इसे आज़माएं। दुर्भाग्यवश हम अब के लिए धुंधले पाठ से फंस गए हैं। –

+1

यहां पर धुंधला फोंट के बारे में और कुछ है: http://stackoverflow.com/questions/190344/wpf-blurry-fonts-problem-solutions – Spoike

2

त्वरित फिक्स:

अपने धुँधली नियंत्रण को जड़ से हर कंटेनर इन विकल्पों का उपयोग पर

 UseLayoutRounding="True" 
     RenderOptions.BitmapScalingMode="NearestNeighbor" 
     SnapsToDevicePixels="True" 
     RenderOptions.ClearTypeHint="Enabled" 

स्पष्टीकरण:

UseLayoutRounding = सच उप-पिक्सेल लेआउट समस्याओं को हल करता है । वे अक्सर होते हैं क्योंकि उदा। प्रभाव पिक्सेल के बीच कुछ होने के लिए नियंत्रण आकार बदलें।

RenderOptions.BitmapScalingMode = निकटतम पड़ोसी बिटमैप्स के धुंधले नमूने को ठीक करता है। प्रभाव या अन्य तकनीकों का उपयोग होने पर बिटमैप्स का उपयोग किया जाता है। जब उन्हें कंटेनर या नियंत्रण में दोबारा लगाया जाता है तो वे पिक्सल के बीच में समाप्त हो सकते हैं और इसलिए बिटमैप के पिक्सल को अलग कर सकते हैं।

SnapsToDevicePixels = "सही" फिक्स ऊर्ध्वाधर और क्षैतिज बहुभुज, लाइनों और आयतों पिक्सल

RenderOptions.ClearTypeHint = "सक्षम" पाठ पर reenables ClearType inbetween गाया जा रहा है। इसे प्रभाव से बहुत आसानी से अक्षम किया जाता है या जब भी रेंडरर टेक्स्ट की सटीक पृष्ठभूमि नहीं जानता है।

आपको इसे प्रत्येक कंटेनर पर उपयोग करना चाहिए क्योंकि कभी-कभी, उदा। डेटा टेम्पलेट्स द्वारा इन विकल्पों को उप नियंत्रण के लिए फिर से डिफॉल्ट किया जाता है।

+1

अतिरिक्त: आप 4 के स्क्रीन पर या अन्य अवसरों पर दृश्य समस्याओं में भाग ले सकते हैं। उदाहरण के लिए पाठ को मध्य में या कुछ पिक्सेल पूरी तरह से गायब किया जा सकता है, यहां तक ​​कि पूरी 1 पिक्सेल लाइनें अदृश्य हो सकती हैं। इन समस्याओं को ठीक करने के लिए आपको अतिरिक्त तकनीकों की आवश्यकता है। – ecreif

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