2008-09-08 12 views
11

तो मैं उन Windows Vista UI दिशानिर्देशों को किसी अन्य प्रश्न से जुड़े किसी व्यक्ति को पढ़ रहा था, और उन्होंने उल्लेख किया कि आप 120 डीपीआई में स्विच से बचने में सक्षम होना चाहिए। खैर, मैं अपने ऐप के साथ अपने आसान वीएम को आग लगाता हूं, और हम क्या प्राप्त करते हैं ... अयाग !!! प्रमुख यूआई असफल!फ़ॉन्ट-आकार स्वतंत्र यूआई: जब मैंने 120 डीपीआई पर स्विच किया तो सबकुछ टूट गया?

सब कुछ सब झुका हुआ है: कुछ कंटेनर उनके पाठ के लिए पर्याप्त नहीं हैं; कुछ नियंत्रण जो "एक दूसरे के बगल में" स्थित थे, अब सभी एक साथ squished/अलग फैल गए हैं; कुछ बटन काफी लंबा नहीं हैं; मेरे ListView कॉलम पर्याप्त विस्तृत नहीं हैं ... eeek।

ऐसा लगता है कि एक पूरी तरह से अलग दृष्टिकोण क्रम में है। मेरा पिछला एक मूल रूप से VS2008 विंडोज फॉर्म डिज़ाइनर का उपयोग कर रहा था, मुझे लगता है, एक पिक्सेल-आधारित लेआउट। मैं देख सकता हूं कि अगर मैं विंडोज फॉर्म के साथ रहना चाहता था, FlowLayoutPanel एस सहायक होगा, हालांकि मैंने उन्हें अतीत में बल्कि लचीला पाया है। वे समस्या को हल नहीं करते हैं जहां कंटेनर (जैसे फॉर्म स्वयं) पर्याप्त नहीं हैं; संभवतः ऐसा करने का एक तरीका है? शायद AutoSize संपत्ति?

यह भी एक संकेत हो सकता है कि जहाज को डब्ल्यूपीएफ में कूदने का समय है; मैं इस धारणा के तहत हूं कि यह विशेष रूप से इस तरह की चीज़ के लिए डिज़ाइन किया गया है।

मूल मुद्दा इन करने के लिए नीचे आ रहा है: यदि मैं विंडोज फ़ॉर्म को एक font-size स्वतंत्र लेआउट को प्राप्त करने के लिए सभी चाल है कि उपयोगकर्ता की स्थापना जीवित रह सकते हैं कर रहे हैं क्या साथ रहना थे

  • उसकी फोंट बड़ा, या प्रदर्शन 120 डीपीआई में सेट?
  • क्या डब्ल्यूपीएफ के पास महत्वपूर्ण फायदे हैं, और यदि हां, तो क्या आप मुझे यह समझाने की कोशिश कर सकते हैं कि यह स्विच के लायक है?
  • क्या फ़ॉन्ट आकार-स्वतंत्र लेआउट के लिए कोई सामान्य "सर्वोत्तम अभ्यास" है, या तो .NET स्टैक में या सामान्य रूप से?

उत्तर

11

से निपटने के लिए हो सकता है कि कैसे एंकर और डॉक गुण अपने नियंत्रण पर काम जानें, छोड़ कुछ भी जो ऑटोसाइज स्वयं अकेले हो सकता है, और जब आप कर सकते हैं TableLayoutPanel का उपयोग करें।

यदि आप इन तीन चीजें करते हैं, तो आपको विंडोज फॉर्म में बहुत से WPF डिज़ाइन अनुभव मिलेगा। एक अच्छी तरह से डिज़ाइन किया गया TableLayoutPanel नियंत्रणों का आकार देने के लिए सबसे अच्छा करेगा ताकि वे फ़ॉर्म को ठीक से फिट कर सकें। ऑटोसाइज नियंत्रण, डॉकिंग, और ऑटोस्केलमोड सोरेन कुक्लाऊ द्वारा उल्लिखित, आपको कुछ अच्छी तरह से स्केल करने में सक्षम होना चाहिए। यदि नहीं, तो आपके फॉर्म पर इसके बहुत अधिक नियंत्रण हो सकते हैं; इसे टैब पृष्ठों, फ़्लोटिंग टूलबॉक्स या किसी अन्य स्थान में विभाजित करने पर विचार करें।

डब्ल्यूपीएफ में यह बहुत आसान है क्योंकि ऑटो आकार के नियंत्रण की अवधारणा अंतर्निहित है; ज्यादातर मामलों में यदि आप समन्वय जोड़ी का उपयोग करके एक WPF तत्व डाल रहे हैं तो आप इसे गलत कर रहे हैं। फिर भी, आप इस तथ्य को नहीं बदल सकते कि कम संकल्पों में स्क्रीन को भरने के लिए इसमें 120 डीपीआई टेक्स्ट नहीं लेते हैं। कभी-कभी समस्या आपका लेआउट नहीं है, लेकिन एक छोटी जगह में बहुत अधिक लगाने का प्रयास है।

+0

मैंने हमेशा यूआई प्राप्त करने के लिए एंकर, डॉक, ऑटोसाइज और टेबललाउटपैनल्स का उपयोग किया है जो परिणामस्वरूप हैं और परिणामस्वरूप आकार बदलने योग्य हैं। हालांकि, "एक्सपी स्टाइल डीपीआई स्केलिंग" चेकबॉक्स बंद होने के साथ उच्च डीपीआई सेटिंग्स के तहत मैंने पाया कि मेरे प्रत्येक ऐप में ब्लूरी फोंट हैं। इसे ठीक करने पर कोई सुझाव? –

+2

@romkyns: जब तक आपका एप्लिकेशन विशेष रूप से कहता है कि यह "उच्च-डीपीआई जागरूक" है, तो आपके ऐप को एक ही क्लज फिक्स प्राप्त करने के साथ ही अन्य सभी छोटी गाड़ी ऐप्स मिलते हैं। जब आप वर्तमान डीपीआई के लिए पूछते हैं तो आपका ऐप झूठ बोला जाता है (बताया गया है कि यह 96 है), और ग्राफिक्स कार्ड आपके लिए आपके फॉर्म को स्केल करेगा - इसे धुंधला कर देगा। माइक्रोसॉफ्ट ने डेवलपर्स को जो कुछ करना है उसे करने की कोशिश कर दिया - यही कारण है कि हर किसी को स्केलिंग के ** ** को चुनना होगा। Google: 'dpiAware' मैनिफेस्ट। –

4

अगर मैं विंडोज फ़ॉर्म के साथ रहना थे, एक font-size स्वतंत्र लेआउट कि उपयोगकर्ता अपने फोंट बड़े सेट करना, या 120 डीपीआई के लिए प्रदर्शन की स्थापना जीवित रह सकते हैं प्राप्त करने के लिए सभी चाल क्या हैं?

एक के लिए, AutoScaleMode आपका मित्र हो सकता है।

4

सामान्य रूप से, समस्या फॉर्म लेआउट के लिए दो अलग "स्थिरांक" का उपयोग करने में से एक है, और फिर दूसरे को बदले बिना उन स्थिरांक में से एक को बदलना।

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

इसके लिए पैकेज और कक्षाएं हैं, लेकिन दिन के अंत में आपको एक इकाई या दूसरे को चुनना होगा, या बदलते निरंतर के अनुसार इकाइयों में से एक को स्केल करना होगा।

व्यक्तिगत रूप से, मैं फॉर्म पर इकाइयों को इंच में बदल दूंगा। मैं सी # व्यक्ति नहीं हूं, इसलिए मुझे नहीं पता कि यह मूल रूप से समर्थित है या नहीं, या यदि आपको एप्लिकेशन स्टार्टअप पर कुछ गतिशील फॉर्म आकार देना है।

यदि आपको अपने सॉफ्टवेयर में ऐसा करना है, तो आगे बढ़ें और सामान्य रूप से सब कुछ आकार दें (कहें, अपने सामान्य 96 डीपीआई में)।

जब आपका आवेदन शुरू होता है, तो सत्यापित करें कि सिस्टम आपके फॉर्म दिखाने से पहले 96 डीपीआई पर है। अगर यह महान है। यदि नहीं, तो फ़ॉर्म को दिखाने से पहले एक चर को सुधार कारक के साथ सेट करें, और स्केल करें और अनुवाद करें (प्रत्येक स्थान और आकार दोनों को संशोधित करें)।

परम, हालांकि, इंच या अंक (एक बिंदु 1/72 इंच) में सब कुछ निर्दिष्ट करना होगा और ओएस को इसके साथ सौदा करने दें। आप कोने मामलों में (के साथ एक सही तरीके से सेट डीपीआई कुछ पिक्सल में अपने आवेदन में दिखाई देगा एक घर के बाहर स्क्रीन ...)

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