मैं एक संकल्प स्वतंत्र प्रणाली कैसे बनाऊं?


10

मैं इस एक पर खाली कर रहा हूँ। मैं निश्चित रूप से किनारों पर सामान रख सकता हूं, जो मेरे यूआई रिज़ॉल्यूशन को स्वतंत्र बना देगा ... जब तक कि यह इतना बदल न जाए कि ग्राफिक्स बहुत छोटा हो। जब भी जरूरत हो मैं उचित तरीके से कैसे मापूं? स्केलिंग करते समय मैं अपने ग्राफिक्स को सही अनुपात में कैसे रखूं? मैं नहीं चाहता कि उन्हें बढ़ाया जाए अगर संकल्प में 16:10 की तरह एक अलग अनुपात हो जो किसी और चीज के विपरीत हो।

क्या इस पर एक सच्चा और आजमाया हुआ दृष्टिकोण है? इस समस्या के कारण वीडियो प्लेयर काली सीमाएँ दिखाते हैं, क्या यह ठीक से हल नहीं है?


1
देखें [यह] [१] सवाल। मेरा उत्तर कुछ विवरणों की व्याख्या करता है। [१]: gamedev.stackexchange.com/questions/34/…
इंजीनियर

जवाबों:


5

पहले यह ध्यान रखें कि तकनीकी तौर पर वहाँ विघटन के साथ सच्ची संकल्प स्वतंत्रता जैसी कोई चीज नहीं है। उच्च पर्याप्त आवर्धन के साथ व्यक्तिगत टेक्सल्स दिखाई देने लगेंगे। इसका एकमात्र समाधान वेक्टर ग्राफिक्स सिस्टम लिखना है।

कहा जा रहा है कि एक मजबूत रेखापुंज आधारित संकल्प स्वतंत्र प्रणाली बनाने के लिए कुछ कदम हैं: आकार, समन्वय प्रणाली और लेआउट।

आकार और स्थिति के लिए हमें कुछ इकाइयों के सेट का उपयोग करने की आवश्यकता होती है जो वास्तविक एप्लिकेशन रिज़ॉल्यूशन के लिए एक अनुपात बनाए रखते हैं। इस मामले में इंच का उपयोग करने देता है क्योंकि मैं अमेरिकी हूं और आप डीपीआई के साथ तत्वों को स्केल कर सकते हैं (डॉट्स प्रति इंच)। उदाहरण के लिए, आपका आवेदन 800x600 पर चल रहा है। डिफ़ॉल्ट विंडोज डीपीआई 96 है तो इसका मतलब है कि एप्लिकेशन का रिज़ॉल्यूशन (800/96) x (600/96) इंच या 8.33x6.25 इंच है।

चूंकि आपको बहुत कम से कम, 4: 3 और 16: 9 पहलू अनुपात के साथ काम करने में सक्षम होने की आवश्यकता है, इसलिए आप अपने स्क्रीन समन्वय प्रणाली को कैसे संभालते हैं, थोड़ा मुश्किल हो जाता है। मैं जो करने की सलाह देता हूं वह (0,0) डिस्प्ले क्षेत्र के केंद्र में (साथ ही साथ खिड़कियां और नियंत्रण) है। यह अच्छी तरह से काम करता है क्योंकि यदि आप एक कोने में (0,0) डालते हैं, तो जैसा कि उस कोने में रिज़ॉल्यूशन और पहलू अनुपात होता है, वह आपके सभी स्प्राइट्स का अनुवाद करने वाला होता है, जबकि स्क्रीन का केंद्र हमेशा स्क्रीन के केंद्र में होगा डिवाइस की बात करें। 800x600 के साथ हमारे उदाहरण को जारी रखते हुए यह एक समन्वित प्रणाली में परिणाम देगा (बाएं से दाएं) -4.165in से 4.165in और (ऊपर से नीचे) 3.125 से -3.125in।

तो इस समय आपके पास उन वस्तुओं के साथ डीपीआई स्वतंत्र यूआई सिस्टम है जो हमेशा स्क्रीन के केंद्र के सापेक्ष एक ही स्थान पर होंगे - कोई संकल्प स्वतंत्र नहीं। सौभाग्य से डीपीआई स्वतंत्रता आपको कुछ अनुमान के आधार पर डीपीआई को स्केल करके यूआई को स्केल करने की अनुमति देती है। उदाहरण के लिए, हम अपने अनुमान के रूप में ऊर्ध्वाधर रिज़ॉल्यूशन का उपयोग करके डीपीआई को स्केल कर सकते हैं। यदि 800x600 96 DPI है, तो हम 1024x768 के लिए 123 DPI या 1280x720 के लिए 115 DPI का उपयोग करेंगे।

अंत में आपको एक लेआउट सिस्टम बनाने की आवश्यकता होगी जो पूर्ण स्थिति और साथ ही सापेक्ष स्थिति दोनों को संभालता है। इसके उत्कृष्ट उदाहरण WPF और वेब हैं। आप निर्दिष्ट कर सकते हैं कि नियंत्रण / बॉक्स कई अन्य उपयोगी स्वचालित लेआउट विकल्पों के साथ किनारे पर डॉकिंग करते समय कुछ% मूल तत्व को भरते हैं। यह सब एक साथ एक UI सिस्टम में परिणाम देगा जो कई अलग-अलग प्रस्तावों और पहलू अनुपातों में लगभग समान दिखने में सक्षम है।

संक्षेप में, मैं आपको डब्ल्यूपीएफ का अध्ययन करने की सलाह देता हूं क्योंकि यह लगभग सभी करता है, सिवाय इसके कि यह शीर्ष-बाएं कोने के समन्वय प्रणाली में एक मूल को बनाए रखता है और ऊर्ध्वाधर संकल्प के आधार पर स्वचालित रूप से डीपीआई को स्केल नहीं करता है।


-1

आम तौर पर आप क्या करना चाहते हैं यह खेल पर निर्भर करता है।

एक विकल्प काले रंग की सीमाएं हैं यदि पहलू अनुपात (अनुपात) अलग है (शायद सबसे आसान है, बस बनावट को प्रस्तुत करना है, तो उस स्क्रीन को प्रस्तुत करना, उपयुक्त के रूप में आकार देना)।

एक अन्य विकल्प अलग-अलग पहलू अनुपात के लिए अलग-अलग रेंडर पथ है। आपके पास वाइडस्क्रीन के लिए एक, 'सामान्य' के लिए एक हो सकता है।

फिर भी एक अन्य विकल्प चीजों को अलग-अलग करना है, जैसे कि यूआई संदेश बॉक्स को रिज़ॉल्यूशन के आधार पर बड़ा या छोटा करना। जब भी आपको वर्कआउट करने की आवश्यकता हो, तो सटीक पिक्सेल का उपयोग करने के बजाय, 0.2 डाउन, 0.8 आर पार, चौड़ाई 0.1, ऊंचाई 0.3 जैसी चीजें करें। इस मामले में पूरी तरह से आप चीजों की स्ट्रेचिंग प्राप्त करेंगे, हालाँकि आप इस बात पर निर्भर करते हैं कि आप उन चीजों को कैसे आकर्षित कर रहे हैं जो ठीक हो सकती हैं (यानी एक यूआई पृष्ठभूमि को फैलाएं, लेकिन पाठ को नहीं)।

3 डी के संदर्भ में, जब तक आप व्यूपोर्ट को सही तरीके से सेट करते हैं, तब तक आपको वाइडस्क्रीन खिलाड़ियों को गैर-वाइडस्क्रीन सेटअप की तुलना में थोड़ा अधिक देखने में सक्षम होना चाहिए। (वैकल्पिक रूप से काली सीमाएँ खींचना / या दृश्य को खींचना)।


"बस बनावट के लिए प्रस्तुत करना, फिर उस स्क्रीन को प्रस्तुत करना, उपयुक्त के रूप में आकार देना" नहीं। यह वास्तव में धुंधली और अजीब दिखने वाली छवि बनाएगा। और अगर संकल्प बहुत कम हो तो क्या होगा? सब कुछ अपठनीय हो जाएगा।
तारा

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

मैं पढ़ता रहा। लेकिन आपका जवाब बहुत ही अनिर्णायक है। इसके अलावा, आप निश्चित रूप से मेरे द्वारा वर्णित मुद्दों को प्राप्त करेंगे, क्योंकि आप सब कुछ कम संकल्प में प्रस्तुत नहीं कर सकते हैं और पूरी तरह से पठनीय रहने के लिए पाठ की अपेक्षा कर सकते हैं।
तारा

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

मैंने यह नहीं कहा कि लक्ष्य से कम रिज़ॉल्यूशन को रेंडर करें। आप बस यूआई 1: 1 को नहीं ले सकते हैं और इसे कम रिज़ॉल्यूशन के लिए प्रस्तुत कर सकते हैं, क्योंकि इसे डिज़ाइन किया गया था (यही मेरा मतलब है कि कम रिज़ॉल्यूशन के साथ)।
तारा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.