2010-11-12 7 views
7

मेरे अन्य (असंबद्ध) question में, @Meleak SnapsToDevicePixels कोड में बिखरे हुए थे (उनके उत्तर में), मुझे पता चला कि यह चीजों को तेज दिखने के लिए उपयोग किया जाता है। तो सवाल, यह हर जगह क्यों नहीं उपयोग किया जाता है क्योंकि यह चीजों को बेहतर दिखता है? या क्या डाउनसाइड्स हैं जिनके बारे में मुझे अवगत होना चाहिए? मुझे इसका उपयोग कब/नहीं करना चाहिए?उपयोग करना चाहिए LayoutRounding और SnapsToDevicePixels हमेशा इस्तेमाल किया जाना चाहिए?

उत्तर

2

ऐसा करने से subpixel rendering अक्षम हो जाता है, जो तेजता में सुधार करता है लेकिन WPF के resolution independence को भी हरा देता है। ग्राफिक्स के अनुसार, आप अपने ऐप में क्या कर रहे हैं, इस पर निर्भर करता है कि यह या तो अच्छी या बुरी चीज हो सकती है।

पूर्ण स्पष्टीकरण के लिए एमएसडीएन पर Pixel Snapping देखें।

+21

यह subpixel _positionning_ को अक्षम करता है, _rendering_ नहीं (एक स्ट्रोक पथ एंटी-एलियासिंग के साथ प्रस्तुत किया जाएगा)। यह बस घटकों की सीमाओं को गोल करता है ताकि उनके पूर्णांक समन्वय और आकार हो। यह संकल्प स्वतंत्रता को भी हरा नहीं देता है, क्योंकि राउंडिंग किया जाता है _after_ डिवाइस स्वतंत्र मूल्यों को डिवाइस स्पेस में कनवर्ट करना। –

+0

@ निकोलस, ठीक है, उप-पिक्सेल मानों का उपयोग करके इसे प्रस्तुत करना कठिन होता है जब आपकी सभी सीमाएं वास्तविक पिक्सेल मानों पर छीन ली जाती हैं ... आपका स्ट्रोक पथ उदाहरण काम करेगा, लेकिन उदा। सीधी रेखाएं और भरेंगी नहीं। इसके अलावा, चूंकि संकल्प स्वतंत्रता पिक्सेल ग्रिड से स्वतंत्र होने के आसपास घूमती है, इसलिए मैं नहीं देख सकता कि यह बहुत पिक्सेल ग्रिड पर स्नैप होने पर कैसे हासिल किया जाएगा। यहां तक ​​कि अगर समन्वय प्रणाली रूपांतरण के बाद गोल किया जाता है, तो उपकरणों के बीच प्रतिपादन में शायद छोटे अंतर होंगे। –

+7

हां, छोटे मतभेद होंगे, लेकिन आपका आवेदन लगभग 96 या 300 डीपीआई में समान रूप से दिखाई देगा। _resolution स्वतंत्रता_ द्वारा मेरा यही मतलब है। –

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