Is there a WPF equaivalent to System.Windows.Forms.Screen?

a 夏天 提交于 2019-12-20 09:57:28

问题


I'm trying to create a WPF window that will encompass the entire Desktop working area. In WinForms I'd do this by getting the Union of all the bounds in System.Windows.Forms.Screen.AllScreens.

Is there an equivalent type or other mechanism to get the bounds of the entire desktop in WPF or do I need to use the WinForms type?


回答1:


Try SystemParameters.VirtualScreen* (Top, Left, Height, and Width) properties. http://msdn.microsoft.com/en-us/library/system.windows.systemparameters.virtualscreenheight(v=VS.100).aspx

Don't use winforms api because it doesn't take into account the fact that WPF's measurement units are not pixels. I came across this issue just recently because I'm losing my vision and have my monitor set to a higher dpi. The codebase I was working on used the Winforms Settings and the UI was larger than my screen.

If you're going to use the winforms api. Look at this blog post on calculating the DPI factor.




回答2:


I have successfully used WpfScreenHelper 0.3.0.0, currently on Github or Nuget, https://github.com/micdenny/WpfScreenHelper

It does what the .NET framework should have done so many years ago. I needed to check if some coordinates exist on any screen in WPF, as in these:

  • Very germane: Determine if an open WPF window is visible on any monitor
  • Forms-only and inadequate WPF suggestions: Determining if a form is completely off screen



回答3:


Just use WinForms. I do not think there is a direct WPF equivalent.




回答4:


You could try SystemParameters.VirtualScreenWidth and associated parameters. That might not provide as good as a result as continuing with the WinForms API.

The only downside I can see with the WinForms type is an extra dependency and the larger working set related to that.



来源:https://stackoverflow.com/questions/2704887/is-there-a-wpf-equaivalent-to-system-windows-forms-screen

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!