2013-03-07 7 views
16

मैं कुछ समय के लिए Screen.PrimaryScreen.Bounds.Size के साथ ठीक रहा हूं, लेकिन मेरे विंडोज 7 कंप्यूटर पर मेरे बड़े-स्क्रीन टीवी से जुड़ा हुआ यह मुझे गलत मान दे रहा है।प्राथमिकस्क्रीन के साथ समस्याएं। आकार

मैंने SystemInformation.PrimaryMonitorSize को आजमाने के लिए कहीं और पढ़ा लेकिन यह वही मान देता है।

जब मैं स्क्रीन रेज़ोल्यूशन प्राप्त करने के लिए डेस्कटॉप पर राइट क्लिक करता हूं, तो यह 1920x1080 कहता है। उपर्युक्त दो मुझे 1280x720 दे रहे हैं।

मैं भी WPF संस्करणों की कोशिश की है:

var w = System.Windows.SystemParameters.PrimaryScreenWidth; 
var h = System.Windows.SystemParameters.PrimaryScreenHeight; 
MessageBox.Show(new Size((int)w, (int)h).ToString()); 

प्रदर्शन आकार (डेस्कटॉप सही क्लिक करें) के माध्यम से बदल दिया गया है Personalize > Desktop विकल्पों 150% (मानेंगे, क्योंकि स्क्रीन 60 "है और आप बैठते हैं । एक तरह से दूर)

इस का पता लगाने के लिए इतना मूल्य से ऊपर समायोजित किया जा सकता लौटे

नोट: मैं के साथ एक निष्पादन योग्य राइट क्लिक करें यह चारों ओर पाने के लिए की खोज की है और डीपीआई वर्चुअलाइजेशन निष्क्रिय करने के लिए संगतता समायोजित, लेकिन मैं अभी भी एक programatic समाधान की जरूरत है तो मैं करने के लिए की जरूरत नहीं है उपयोगकर्ता को यह खुद को समायोजित: देखें - http://msdn.microsoft.com/en-us/library/dd464660(VS.85).aspx#dpi_virtualization

+0

क्या कंप्यूटर (लैपटॉप?) टीवी सेट से 1280 x 720 तक जुड़ा हुआ है? मेरे पास लगभग 1320 x 900 के अधिकतम रिज़ॉल्यूशन वाले लैपटॉप थे ... –

+0

@Grant आपका क्या मतलब है? स्क्रीन रेज़ोल्यूशन '1920x1080' है, कोई माध्यमिक डिस्प्ले नहीं है। कंप्यूटर एक लैपटॉप नहीं है। –

+0

आह, ठीक है, बस इसे गलत तरीके से पढ़ें। मैंने माना कि आपके पास टीवी का उपयोग माध्यमिक मॉनीटर के रूप में एक win7 लैपटॉप था। –

उत्तर

2

मैं नहीं लग रहा है तो उसे एक डुप्लीकेट सवाल यह है कि चलाने से पहले भरी हुई है, लेकिन इस सवाल का जवाब एक और धागा पर रूप में ही है: https://stackoverflow.com/a/13228495/353147 प्रश्न के रूप में धुंधला फोंट के बारे में नहीं है, लेकिन क्यों स्क्रीन। प्राइमरीस्क्रीन। बाउंड्स। साइज दोषपूर्ण जानकारी देता है। यह दूसरों की मदद कर सकता है।

मैंने एक त्रुटि संदेश में भाग लिया, कि mscorlib ने एक शून्य त्रुटि फेंक दी। इस धागे से http://forums.asp.net/t/1653876.aspx/1 मैं अनचेकिंग "क्लिकऑन सुरक्षा सेटिंग्स सक्षम करें" को अनचेक करने में सक्षम था। यह एक हैक की तरह लगता है, लेकिन यह काम करता है।

5

यह विंडोज़ 100%

ऊपर सेट में अपने Dpi सेटिंग हो सकता है

इस पद्धति का उपयोग का प्रयास करें, इस वर्तमान व्यवस्था करने के लिए संकल्प स्केल करेगा DPI सेटिंग

Winforms:

private Size GetDpiSafeResolution() 
{ 
    using (Graphics graphics = this.CreateGraphics()) 
    { 
     return new Size((Screen.PrimaryScreen.Bounds.Width * (int)graphics.DpiX)/96 
      , (Screen.PrimaryScreen.Bounds.Height * (int)graphics.DpiY)/96); 
    } 
} 

WPF:

private Size GetDpiSafeResolution() 
{ 
    PresentationSource _presentationSource = PresentationSource.FromVisual(Application.Current.MainWindow); 
    Matrix matix = _presentationSource.CompositionTarget.TransformToDevice; 
    return new Size(SystemParameters.PrimaryScreenHeight * matix.M11, SystemParameters.PrimaryScreenWidth * matix.M22); 
} 

नोट: सुनिश्चित करें कि आपके MainWindow इस कोड

+0

यह एक विनफॉर्म एप्लिकेशन है, इसलिए मुझे एप्लिकेशन प्राप्त करने में परेशानी हो रही है। वर्तमान –

+0

क्षमा करें मैंने सोचा था कि यह wpf था :( –

+0

Winforms संस्करण (untested) के साथ मेरा उत्तर अपडेट किया गया। लेकिन यह वही विचार है, आपको उस –

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