2016-10-27 6 views
9

जब मैं .NET Framework 4.6.2 के साथ WPF परियोजना बनाने की कोशिश, मैं एक त्रुटि है, क्योंकि FormattedText() obsoleted है नीचे के रूप में: [अप्रचलित ("पिक्सेलपियरडिप ओवरराइड का उपयोग करें", झूठा)] सार्वजनिक स्वरूपित टेक्स्ट (स्ट्रिंग टेक्स्ट टॉफॉर्मेट, संस्कृतिइन्फो संस्कृति, फ़्लोडायरेक्शन फ्लोडायरेक्शन, टाइपफेस टाइपफेस, डबल एमएसआईज़, ब्रश फोरग्राउंड);.नेट फ्रेमवर्क में 4.6.2 FormattedText() obsoleted है, कैसे कर सकते हैं मैं इसे ठीक किया गया

नई ओवरराइड विधि सार्वजनिक FormattedText है (स्ट्रिंग textToFormat, CultureInfo संस्कृति, FlowDirection FlowDirection, टाइपफ़ेस टाइपफेस, डबल emSize, ब्रश अग्रभूमि, डबल pixelsPerDip);

प्रश्न: मैं pixelsPerDip निर्धारित कर सकते हैं?

प्रश्न: मैं pixelsPerDip बिना पुराने निर्माता का उपयोग कर सकते कैसे ?, क्योंकि pixelsPerDip अपने प्रोजेक्ट के लिए बेकार है।

उत्तर

11

आप अपने मॉनीटर के डीपीआई की गणना करनी है, देखें: How can I get the DPI in WPF?

अलावा में, नेट के साथ 4.6.2 डीपीआई जागरूकता को संभालने के लिए नए एपीआई आते हैं, तो उपरोक्त विधियों पदावनत किया जा सकता है (उदाहरण के लिए VisualTreeHelper .GetDpi())। देखें https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announcing-net-framework-4-6-2/ यहाँ कुछ उदाहरण कोड है और एक उपयोगकर्ता गाइड: इतना है कि अपने कार्यक्रम विभिन्न DPIs साथ मॉनिटर के बीच खींचा जा सकता है और अभी भी सही ढंग से माप लिया जाता है https://github.com/Microsoft/WPF-Samples/tree/master/PerMonitorDPI

IMHO इस pararameter जोड़ा गया है।

फ्रॉमटेडटेक्स्ट घोषणा से: पिक्सल पेपरडिप: पिक्सेल प्रति घनत्व स्वतंत्र पिक्सेल मान, जो स्केल फैक्टर के बराबर है। उदाहरण के लिए, यदि स्क्रीन का डीपीआई 120 है (या 1.25 क्योंकि 120/96 = 1.25), 1.25 पिक्सेल प्रति घनत्व स्वतंत्र पिक्सेल खींचा गया है। डीआईपी डिवाइस रिज़ॉल्यूशन और डीपीआई से स्वतंत्र होने के लिए डब्ल्यूपीएफ द्वारा उपयोग किए जाने वाले माप की इकाई है।

तुम सिर्फ 1 पर नजर रखने के लिए है और इसलिए किसी भी डीपीआई बदली हुई घटना से निपटने की जरूरत नहीं है, उदाहरण के लिए निम्नलिखित अपने विंडो का onLoaded() घटना में (या अपने निर्माता में) का उपयोग करें:

वर pixelsPerDip = VisualTreeHelper.GetDpi (यह) .PixelsPerDip;

+0

धन्यवाद Leguanjoe –

+0

धन्यवाद Leguanjoe, हालांकि अपने प्रोजेक्ट पर नज़र रखता है स्विच कर सकते हैं नहीं, तो आप जानते हैं कि एक डिफ़ॉल्ट मान मैं निर्धारित कर सकते हैं? (उदाहरण के लिए "-1") या कुछ और मैं डीपीआई पाने के बिना इस निर्माता का उपयोग कर सकते, अग्रिम –

+0

में धन्यवाद मैं, VisualTreeHelper विधि का प्रयोग करेंगे, तो आप के लिए, मैं "1.0" के साथ जाना चाहते हैं नहीं करना चाहती है, ताकि समारोह 96 डीपीआई के साथ एक मॉनिटर की उम्मीद है। मुझे यह भी यकीन नहीं है कि यह मान play में आता है, जब आप केवल 1 स्क्रीन का उपयोग करते हैं। मैंने "5" की कोशिश की और अभी भी FormattedText के आकार में कोई बदलाव नहीं देखा। निम्नलिखित – Leguanjoe

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