2014-09-27 13 views
7

enter image description hereविंडोज फॉर्म्स डीपीआई स्केलिंग

मेरा आवेदन 100% डीपीआई सेटिंग के साथ अच्छा लग रहा है, लेकिन जब उपयोगकर्ता अलग (125% या 150%) का चयन करता है शब्द कंटेनरों में फिट नहीं है।

this.AutoScaleMode = AutoScaleMode.Dpi; 

यह 150% की स्थापना निश्चित (यह एक छोटे कलंक बना है, लेकिन ठीक है), दुर्भाग्य से यह 125% के लिए एक ही नहीं था: जो है Detect windows font size (100%, 125%, 150%): मैं समाधान के साथ मैं यहां पाया इसे ठीक करने की कोशिश की जिसका उपयोग पीसी पर किया जा रहा है, ऐप को चलाने का इरादा है।

क्या इसमें कुछ आसान फिक्स है या क्या मुझे मैन्युअल रूप से हर फॉर्म को पुनर्व्यवस्थित करना है?

+1

देखें http://stackoverflow.com/questions/4075802/creating-a-dpi-aware-application – stuartd

+1

150% से कम, विंडोज स्केलिंग अधिक लेता है और अपने खिड़की एक बिटमैप में खुद खींचने करने देगा। फिर यह उस बिटमैप को स्क्रीन पर प्रस्तुत करता है, इसे बड़ा बनाने के लिए इसे पुन: सहेजता है। हां, यह अस्पष्ट दिखता है, आपको इसे रोकने के लिए खुद को [dpiAware] (http://stackoverflow.com/a/13228495/17034) घोषित करना होगा। आप निश्चित रूप से डीपीआई को अवगत नहीं हैं, हालांकि, आपने किसी भी तरह से नियंत्रण को खुद को ठीक से ठीक करने से रोक दिया है। जैसे वे सामान्य रूप से करते हैं, कोडिंग समस्या दिखाने के लिए एक स्क्रीनशॉट कभी भी अच्छा तरीका नहीं होता है। प्रपत्र की फ़ॉन्ट संपत्ति के साथ कुछ करने के लिए हो सकता है, इसे असाइन न करें। –

+0

@ हंसपैसेंट मैंने फ़ॉन्ट आकार को 12 रूप में बदल दिया, क्या इससे समस्याएं आ रही हैं? –

उत्तर

4

Creating a DPI-Aware Application

सभी कंटेनरों ही AutoScaleMode का उपयोग करना चाहिए - इस भाग मेरी समस्या का समाधान होने

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

  1. तालिका उपयोग लेआउट पैनल
  2. खींचें TableLayoutPanel के सेल में नियंत्रण और लंगर की स्थापना की और संपत्ति गोदी।
  3. कोशिकाओं को मर्ज करने के लिए खींचें नियंत्रण के पंक्तियों और कोस्पेन गुणों को सेट करें
  4. सेल के संबंध में ड्रैग किए गए नियंत्रण का मार्जिन और पैडिंग सेट करें।
  5. खींचें सभी नियंत्रण और एक ही कदम, TableLayoutPanel
  6. का उपयोग कर अब सेट सभी स्तंभों और पंक्तियों TableLayoutPanel = AutoSize का आकार (या% में) पूरा डिजाइन का पालन
  7. सेट TableLayoutPanel गुण AutoSize = सच है, autosizemode = बढ़ने और हटना
  8. सेट प्रपत्र गुण autosize = true, autosizemode =
  9. विंडोज़ ऐप चलाएं यदि आपका विंडोज ऐप अधिकतम स्थिति में खुलता है तो टेबललेआउट पैनेल डॉक प्रॉपर्टी = भरें।
+1

आप तालिका लेआउट पैनल का उपयोग करें और मार्जिन और padding सेट हैं, तो आप [एक बुरा समय के लिए में हो सकता है] (https://support.microsoft.com/en-us/help/3044516/nested-tablelayoutpanel-is-displayed- साथ-साथ-खाली-रिक्त स्थान-इन-ए-विंडोज-फॉर्म-एप्लिकेशन-ऑन-हाई-डीपीआई-मॉनीटर) - बेहतर सुनिश्चित करें कि आप उन तालिका लेआउट पैनलों को घोंसला नहीं देते हैं। –

-2

यह कोड स्निपेट ने मेरे लिए पूरी तरह से काम किया।

http://urenjoy.blogspot.it/2008/11/make-resolution-independent-windows-app.html

(विजुअल स्टूडियो एक्सप्रेस 2013 का उपयोग करके) यह आवश्यक है कि विंडोज़ अनुप्रयोग विभिन्न प्रस्तावों पर एक ही लेआउट होना चाहिए इसका मतलब संकल्प बदलने पर एप्लिकेशन के लेआउट पर कोई प्रभाव नहीं होना चाहिए। ऐसा करने के लिए यहां दिए गए कदम हैं।

  • तालिका उपयोग लेआउट पैनल
  • खींचें TableLayoutPanel के सेल में नियंत्रण और लंगर की स्थापना की और संपत्ति गोदी।
  • कोशिकाओं को मर्ज करने के लिए खींचें नियंत्रण के पंक्तियों और कोस्पेन गुणों को सेट करें
  • सेल के संबंध में ड्रैग किए गए नियंत्रण का मार्जिन और पैडिंग सेट करें।
  • खींचें सभी नियंत्रण और एक ही कदम, TableLayoutPanel
  • का उपयोग कर अब सेट सभी स्तंभों और पंक्तियों TableLayoutPanel = AutoSize का आकार (या% में) पूरा डिजाइन का पालन
  • सेट TableLayoutPanel गुण AutoSize = सच है, autosizemode = बढ़ने और हटना
  • सेट प्रपत्र गुण autosize = true, autosizemode =
  • विंडोज़ ऐप चलाएं यदि आपका विंडोज ऐप अधिकतम स्थिति में खुलता है तो टेबललेआउट पैनेल डॉक प्रॉपर्टी = भरें।
+0

क्या यह स्वीकार्य उत्तर के समान ही उत्तर नहीं है? –

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