2010-11-27 6 views
6

मैंने WPF का उपयोग करके एक यादृच्छिक एप्लिकेशन के लिए एक जीयूआई विकसित किया है। मेरे पास एप्लिकेशन विंडो पर रखे गए बॉक्स डब्ल्यूपीएफ नियंत्रणों का एक गुच्छा है। मैंने कुछ भी अनुकूलित नहीं किया है, बिटमैप्स का उपयोग नहीं किया है, आदिविंडोज़ में डब्ल्यूपीएफ एप्लीकेशन ज़ूम करते समय मुझे पिक्सल क्यों दिखते हैं?

विंडोज 7 (Win key + Plus key में मैग्निफायर एप्लिकेशन का उपयोग करते हुए मेरा एप्लिकेशन चलाते समय और ज़ूमिंग करते समय, आवर्धित जीयूआई पिक्सल दिखा रहा है। मैं शायद गलत हूं, क्योंकि मैं कर सकता हूं ' इसे अन्यथा चर्चा में भाग लेने के लिए समझाने, लेकिन WPFतरह वेक्टर नियंत्रण प्रतिपादन प्रदान करने वाला नहीं है?

धन्यवाद।

उत्तर

17

जब Vista पहली बार भेज दिया गया था, और जब WPF संस्करण 3.0 पर था, तो अंतर्निर्मित आवर्धक के साथ ज़ूमिंग वास्तव में वेक्टर-आधारित स्केलिंग करेगा।

यह काम करना बंद कर दिया जब WPF 3.5 सर्विस पैक 1 भेज दिया गया। (यह sp1 से पहले 3.5 में काम करता था।) इसके पहले यह काम करने का कारण यह है कि डीडब्लूएम (डेस्कटॉप विंडो मैनेजर) - स्क्रीन पर जो कुछ भी आप देखते हैं उसे पेश करने के लिए जिम्मेदार विंडोज़ का हिस्सा - MILCORE.DLL का प्रतिपादन करने के लिए उपयोग करता है। डब्ल्यूपीएफ के संस्करण 3.0 और 3.5 ने भी प्रस्तुत करने के लिए इस घटक का उपयोग किया - इसका मतलब यह था कि सभी WPF सामग्री देशी सामग्री थी, इसलिए बोलने के लिए। (वास्तव में, विंडोज एक्सपी पर, जिसमें डीडब्लूएम नहीं है, मिल्कोर.डीएलएल ऐसा कुछ है जो डब्ल्यूपीएफ आपके सिस्टम पर अपने फायदे के लिए रखता है। लेकिन यह विस्टा और विंडोज 7 में बनाया गया है।) जब डब्ल्यूपीएफ मिल्कोर.डीएलएल का उपयोग कर रहा था विस्टा पर प्रस्तुत करें, स्केलिंग जैसे डीडब्लूएम द्वारा लागू किए गए किसी भी प्रभाव से आप जिस तरह से डब्ल्यूपीएफ करना चाहते हैं, उसमें भी लागू होगा - यह वास्तव में बिना पिक्सेलिंग के स्केल करता है।

दुर्भाग्यवश, यह अब मामला नहीं है। और कारण यह है कि डब्ल्यूपीएफ ने नई प्रतिपादन सुविधाओं को जोड़ना शुरू कर दिया। 3.5 sp1 में, प्रश्न में नई सुविधा कस्टम पिक्सेल शेडर्स के लिए समर्थन था। इसे सक्षम करने के लिए, माइक्रोसॉफ्ट को एमआईएल को अपडेट जारी करना पड़ा। (मीडिया इंटीग्रेशन लेयर - बिट जो वास्तविक प्रतिपादन करता है।) हालांकि, वे वास्तव में मिल्कोर.डीएलएल को अपडेट करने की स्थिति में नहीं थे, क्योंकि यह विंडोज का हिस्सा है - यह है कि स्क्रीन पर जो कुछ भी आप देखते हैं वह स्क्रीन पर हो जाता है। MILCORE.DLL का एक नया संस्करण जारी करने का प्रभावी ढंग से विंडोज़ को अपडेट करना है। विंडोज के लिए रिलीज शेड्यूल उस से .NET के लिए स्वतंत्र है, और इसलिए एकमात्र तरीका डब्ल्यूपीएफ टीम उचित रूप से नई सुविधाओं को जोड़ सकती है, जो एक नया एमआईएल जहाज भेजना था। (सिद्धांत रूप में वे इसे विंडोज अपडेट के माध्यम से कर सकते थे, लेकिन चूंकि डब्ल्यूपीएफ का अब माइक्रोसॉफ्ट के माइक्रोसॉफ्ट के एक अलग विभाजन के स्वामित्व में है, इसलिए इस तरह की चीज अभ्यास में नहीं होती है।)

.NET 3.5 के रूप में एसपी 1, एमआईएल एक अलग डीएलएल में है जिसे wpf_gfx_vXXXX.dll कहा जाता है जहां vXXXX संस्करण संख्या है। .NET 4.0 में, यह wpf_gfx_v0400.dll है।

उल्टा यह है कि डब्ल्यूपीएफ को विंडोज़ को अपडेट करने की आवश्यकता के बिना प्रत्येक नए संस्करण के साथ नई प्रतिपादन सुविधाओं को जोड़ना पड़ता है। नकारात्मकता यह है कि डब्ल्यूपीएफ की प्रतिपादन अब विंडोज के साथ कसकर एकीकृत नहीं है क्योंकि यह विस्टा भेजे जाने पर संक्षेप में वापस आ गया था। और जैसा कि आपने देखा है, ऊपर की आवाज है, यह आवर्धक उतना मजेदार नहीं है जितना कि यह होता था।

+1

वाह, इस तरह का एक पूरा जवाब! अच्छी तरह से किया और स्पष्टीकरण के लिए धन्यवाद! – Boris

+1

एक बहुत ही गहन जवाब, +1! और क्या एक शर्मनाक शर्म की बात है, यह एक अद्भुत विशेषता थी और मैंने सोचा कि हम ओएस स्तर पर और धुंध के बिना प्रत्येक खिड़की के लिए ज़ूम अलग से बदलने में सक्षम होने से केवल 5 मिनट दूर थे ... ओह ठीक है, कोई सपना देख सकता है। –

+0

मैं वास्तव में यहां श्री ग्रिफिथ्स प्लुरसाइट वीडियो में से एक से मिला, जिसमें उन्होंने विस्टा पर आवर्धक का प्रदर्शन किया, और देखा कि यह विंडोज 10 पर मेरे लिए काम नहीं करता है - बस इयान द्वारा स्टैक ओवरव्लो पर अपडेट खोजने के लिए - अच्छा! –

3

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

यदि आप Snoop जैसे कुछ का उपयोग करते हैं तो आप कार्रवाई में ज़ूम और स्केल किए गए WPF वेक्टर ग्राफिक्स प्रतिपादन देख सकते हैं।

+0

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

+0

@ बोरीस यह दुर्भाग्यपूर्ण है कि आवर्धक अनुप्रयोग WPF को विशेष रूप से संभाल नहीं सकता है। यह निश्चित रूप से व्यवहार्य दिखता है कि स्नूप कुछ समान करता है, हालांकि यह केवल एक ही एप्लिकेशन को ज़ूम करता है। हालांकि, मैं कहूंगा कि डब्लूपीएफ का न्यूनतम उपयोग विंडोज विस्टा और विंडोज 7 ओएस के यूआई में किया जाता है। –

+0

@chibacity आप कितने सही हैं। खैर, व्यक्तिगत रूप से मुझे लगता है कि यह शर्म की बात है। मुझे लगता है कि डब्ल्यूपीएफ बहुत अच्छा है और मुझे पता है कि माइक्रोसॉफ्ट अपनी घर की नीतियों के साथ कैसे थकाऊ है; इस प्रकार, यह मुझे समझ में नहीं आता है कि WPF के रूप में कुछ प्रगतिशील को गले लगाने के लिए नहीं। – Boris

0

मुझे लगता है कि, विंडोज 7 आवर्धक वास्तविक अनुप्रयोग ऑन-स्क्रीन यूआई का एक स्नैपशॉट लेता है, और फिर इसे स्वयं बढ़ाता है (WPF अनुप्रयोगों के लिए एक विशेष मामला नहीं बना रहा है)। निश्चित रूप से यह केवल पिक्सल तक पहुंच सकता है, न कि वेक्टर ग्राफिक्स जो दृश्य के पीछे काम करता है।

+0

समझ गया, धन्यवाद। – Boris

+0

आपका स्वागत है! – Vlad

-1

विंडोज -7-मैग्निफायर पिक्सेल आधारित है, लेकिन एरो-थीम सक्रिय है या नहीं, गीलेर के आधार पर आवर्धक मोड में एक अंतर है।

  • एरियो थीम के साथ ज़ूम पिक्सलेटेड है।
  • एरियो थीम के बिना ज़ूम चिकना हुआ है (धुंधला)।

केवल एरियो थीम के साथ अन्य दृश्य ("डॉक किए गए" को छोड़कर) चयन योग्य हैं।

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

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