Csharp/C#教程:PrimaryScreen.Size的问题分享


PrimaryScreen.Size的问题

我已经使用Screen.PrimaryScreen.Bounds.Size一段时间了,但是在连接到我的大屏幕电视的Windows7电脑上,它给了我不正确的值。

我在其他地方读过尝试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“并且您坐得很远)。

如何检测这个,以便从上面返回的值可以调整?

注意 :我已经发现如何通过右键单击可执行文件来解决这个问题,并调整兼容性以禁用DPI虚拟化,但我仍然需要一个程序化解决方案,所以我不必让用户自己调整:请参阅 – http: //msdn.microsoft.com/en-us/library/dd464660(VS.85).aspx#dpi_virtualization

它可能是你设置在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

我不认为这是一个重复的问题,但答案与另一个线程相同: https ://stackoverflow.com/a/13228495/353147因为问题不是关于模糊字体,而是为什么Screen.PrimaryScreen。 Bounds.Size返回错误信息。 它可以帮助别人。

我确实遇到了一条错误消息,mscorlib抛出了一个null错误。 从这个线程https://forums.asp.net/t/1653876.aspx/1我能够发现取消选中“启用ClickOnce安全设置”修复它。 这似乎是一个黑客,但它的工作原理。

上述就是C#学习教程:PrimaryScreen.Size的问题分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1017949.html

(0)
上一篇 2022年1月3日
下一篇 2022年1月3日

精彩推荐