2010-03-15 6 views
7

मेरा .NET एप्लिकेशन (VB.NET 3.5 यदि आपको वास्तव में पता होना चाहिए) फॉर्म उच्च डीपीआई सेटिंग्स में प्रस्तुत किए जाने पर उचित रूप से प्रारूपित नहीं होते हैं। मैंने जो भी फिक्स पाया है, वह अब तक समस्या का कारण बताता है क्योंकि "कुछ यूआई तत्व ठीक से स्केल नहीं करते हैं"। मैं सोच रहा था कि क्या किसी के पास अधिक सार्थक स्पष्टीकरण था? धन्यवाद!क्यों बड़े डीपीआई सेटिंग्स पर .NET Winforms पैमाने पर अनुचित है?

उत्तर

10

असल में समस्या यह है कि जीडीआई + (और विस्तार से, विंडोज फॉर्म) डिवाइस पिक्सल का उपयोग अपनी डिफ़ॉल्ट माप इकाई के रूप में करता है। जब आप डीपीआई सेटिंग बदलते हैं, तो पिक्सेल का भौतिक आकार वास्तव में नहीं बदलता है (एक पिक्सेल एक पिक्सेल है) लेकिन फोंट और छवियों को गैर-पिक्सेल आकार में मापा जाता है, तदनुसार स्केल किया जाता है। विंडोज फॉर्म लेआउट के लिए और अधिक जगह बनाकर इसे बेहतर तरीके से समायोजित करने का प्रयास करता है, लेकिन एकमात्र सच्चा समाधान पूरे गैर-पिक्सेल आधारित माप प्रणाली का उपयोग करना है। यह वही है जो डब्ल्यूपीएफ करता है।

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

विंडोज फॉर्म में समस्या को कम करने के लिए आप एक चीज कर सकते हैं, "नया" (.NET 2.0 के रूप में) लेआउट पैनल जैसे टेबललेआउट पैनेल, फ्लोलाउटआउट पैनल आदि का उपयोग करना है। जब भी संभव हो एंकर, डॉक और ऑटोसाइज का उपयोग करें। यह विंडोज़ फॉर्म को आपके यूआई को रीफ्लो करने की अनुमति देगा जितना संभव हो सके उतना संभव है।

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

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