हाई-डीपीआई स्केलिंग को कैसे मजबूर करें?


27

मैं किसी एप्लिकेशन को हाई-डीपीआई स्केल करने के लिए कैसे बाध्य कर सकता हूं?

  • वहाँ एक आवेदन है, जो डेवलपर्स के रूप में यह उच्च dpi जागरूक, जब यह वास्तव में नहीं है के रूप में प्रकट किया। मैं डीपीआई-स्केलिंग को कैसे मजबूर कर सकता हूं?

  • इस बात पर ध्यान दें कि एक ऐप्लिकॉन है जिसे Microsoft ने " HighDpiAware" कंपेटिबिलिटी शिम लागू किया है , जब एप्लिकेशन वास्तव में नहीं है। मैं डीपीआई-स्केलिंग को कैसे मजबूर कर सकता हूं?

मैं एक आवेदन में डीपीआई-स्केलिंग लागू करने के लिए विंडोज को कैसे मजबूर कर सकता हूं?


संपादित करें: उच्च-डीपीआई स्केलिंग क्या है?

सभी उपयोगकर्ता 96dpi पर Windows नहीं चलाते हैं। प्रत्येक बटन 75x23 पिक्सेल का नहीं होना चाहिए, प्रत्येक टूलबार 25pixels उच्च नहीं है, और प्रत्येक ट्रीव्यू ग्लिफ़ 16x16 नहीं है। यदि उपयोगकर्ता ने विंडोज के लिए एक अलग डीपीआई सेटिंग को चुना है, तो आपको उचित रूप से सब कुछ स्केल करने की आवश्यकता है।

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

विंडोज विस्टा के साथ शुरू, और डेस्कटॉप संरचना की शक्ति का लाभ उठाते हुए, माइक्रोसॉफ्ट ने डेवलपर्स को अपना काम करने के लिए छोड़ दिया, और अब आवेदन करने के लिए झूठ। वे ऐप बताते हैं कि उपयोगकर्ता 96dpi पर चल रहा है। Windows तब वीडियो कार्ड, और डेस्कटॉप कंपोजिशन का उपयोग करता है, ताकि फॉर्म जमा किए जा सकें।

प्रो: फॉर्म की सामग्री एक अच्छा पठनीय आकार होगा।
Con: सब कुछ थोड़ा फजी होगा।

यह "हाई-डीपीआई स्केलिंग" सुविधा केवल उपयोगकर्ता के विवेक पर काम करती है, और इसके लिए आवश्यक है:

  • विंडोज विस्टा या नया
  • सक्षम करने के लिए डेस्कटॉप संरचना
  • उपयोगकर्ता "Windows XP शैली स्केलिंग का उपयोग करें" बंद करने के लिए
  • उपयोगकर्ता आपके एप्लिकेशन के लिए स्केलिंग को अक्षम नहीं करेगा

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

के विषय कैसे अपने आवेदन (फ़ॉन्ट चेहरा, फ़ॉन्ट आकार, और डीपीआई सेटिंग शामिल नहीं) उपयोगकर्ता की प्राथमिकताओं का सम्मान करने के लिए एक सवाल है stack overflow। जैसा कि आपकी " उच्च-डीपीआई जागरूकता " की घोषणा करने वाली प्रविष्टि प्रविष्टि के लिए सिंटैक्स है ।

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


मुझे इसमें भी दिलचस्पी है। हमारे पास एक महत्वपूर्ण एप्लिकेशन है जो डीपीआई-अवगत नहीं है और मूल रूप से 800x600 स्क्रीन के लिए डिज़ाइन किया गया था। विंडोज डिफ़ॉल्ट रूप से इसे स्केल नहीं करता है, और इससे कोई फर्क नहीं पड़ता कि क्या हम XP, Vista, या 7. का उपयोग कर रहे हैं क्योंकि हमारे कर्मचारी इस 800x600 ऐप में अपना अधिकांश समय बिताते हैं, वे अपने 20 "एलसीडी मॉनिटर का उपयोग करने पर जोर देते हैं 800x600 रिज़ॉल्यूशन पर! यह एक बहुत बड़ी बर्बादी है, और पिक्सेल की आत्म-कमी की कमी उनके रास्ते में हो जाती है, जब उन्हें एमएस ऑफिस, IE8, आदि का उपयोग करने की आवश्यकता होती है
माइल्स एरिकसन

1
यह विंडोज विस्टा तक नहीं था कि Microsoft ने डेस्कटॉप कंपोजिशन (जिसे कुछ गलती से एयरो कहते हैं ) का उपयोग करके ग्राफिक्स कार्ड का उपयोग उन स्केल अनुप्रयोगों के लिए करना शुरू कर दिया था जो विशेष रूप से स्केलिंग से बाहर नहीं निकलते। XP में कोई स्केलिंग नहीं थी, और आप Vista 7 में स्केलिंग नहीं चाहते । आप चाहते हैं कि आपका एप्लिकेशन ठीक से लिखा जाए। किसी डेवलपर की मशीन पर जाएं, और अपने रिज़ॉल्यूशन को वापस 1050 में बदलें, और डीपीआई को 168 पर सेट करें। सब कुछ समान रूप से टैर्ड-मोड में ज़ूम हो जाएगा, सिवाय ऐप के ठीक से व्यवहार नहीं होगा। उन्हें बताएं कि जब तक यह तय नहीं हो जाता तब तक उन्हें कोई भोजन या पानी नहीं मिल रहा है।
इयान बॉयड

हमारे पास हमेशा उन डेवलपर्स तक पहुंच नहीं है जो हमारे द्वारा उपयोग किए जाने वाले एप्लिकेशन बनाते हैं। अगर केवल हमने किया ...
Cylindric

रूप = आकार?
जिग्गंजर

जवाबों:


5

हम्म। मेरा सुझाव प्रकट को संपादित करने और गलत घोषणा को हटाने के लिए होगा। और इसके बारे में डेवलपर को बग के लिए मत भूलना लेकिन आप कर सकते हैं!

संपादित करें: ध्यान दें कि केवल निष्पादन योग्य के बगल में प्रकट होना संभव है, उदाहरण के लिए foo.exe, आप प्रकट को जगह देंगे foo.exe.manifestMSDN लेख देखें ("फ़ाइल नाम सिंटैक्स" नामक अनुभाग में देखें )।


मुझे लगता है कि यह एकमात्र रास्ता है। नकारात्मक पक्ष पर: यह प्रतिशोध के डिजिटल हस्ताक्षर को अमान्य करता है।
इयान बॉयड

@ इयान: ऐसा लगता है कि आपको एक संसाधन में प्रकट नहीं करना है।
12

3
ऐसा हुआ करता था कि एक .manifestफ़ाइल निष्पादन योग्य के अंदर प्रकट होने पर पूर्वता लेती थी। आज निष्पादन योग्य में बनाया गया कोई भी प्रदर्शन किसी भी बाहरी .manifestफ़ाइल को ओवरराइड करता है। मुझे याद नहीं है कि XP ​​के किस सर्विस पैक ने इसे बदल दिया था - मुझे लगता है कि यह SP2 था।
इयान बॉयड

8

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

DPIMangler: ब्लॉग पोस्ट , स्रोत कोड


6

आप अभी भी प्रकट को संपादित कर सकते हैं, आपको केवल .EXE फ़ाइल में इसे संपादित करना होगा। एक ऐसे संसाधन संपादक की तलाश करें जिसमें प्रकट समर्थन हो। अल्पविकसित समर्थन के साथ एक उदाहरण एक्सएन रिसोर्स एडिटर है।) बस उस लाइन को ढूंढें और हटा दें जिसमें हाईडोपियावेयर का उल्लेख हो और निष्पादन योग्य को बचाए।

यद्यपि आप इसे संपादित करने से पहले निष्पादन योग्य की एक प्रतिलिपि बनाना सुनिश्चित करते हैं, हालांकि!


"नकारात्मक पक्ष पर: यह प्रतिशोध के डिजिटल हस्ताक्षर को अमान्य करता है।"
इयान बॉयड

0

मुझे आश्चर्य है कि यदि ResizeEnable है तो आपकी तलाश क्या है?

http://www.digitallis.co.uk/pc/ResizeEnable/


नहीं, विंडोज़ पहले से ही resizable हैं। समस्या तब होती है जब कंपोज़िटर डिस्प्ले के लिए विंडो कंपोज़ करता है। अभी यह कुछ खास नहीं कर रहा है, क्योंकि आवेदन में कहा गया है कि इसे बढ़ाने की जरूरत नहीं है। लेकिन वास्तव में खिड़की को छोटा करने की आवश्यकता है।
इयान बॉयड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.