我正在尝试创建一个包含整个桌面工作区的WPF窗口。在WinForms中,我通过获取System.Windows.Forms.Screen.AllScreens
中所有边界的联盟来实现这一点。
是否有相同的类型或其他机制来获取WPF中整个桌面的边界,还是需要使用WinForms类型?
答案 0 :(得分:14)
尝试SystemParameters.VirtualScreen *(顶部,左侧,高度和宽度)属性。 http://msdn.microsoft.com/en-us/library/system.windows.systemparameters.virtualscreenheight(v=VS.100).aspx
不要使用winforms api,因为它没有考虑到WPF的测量单位不是像素的事实。我最近才遇到这个问题,因为我失去了视力并且我的显示器设置为更高的dpi。我正在处理的代码库使用Winforms设置,UI比我的屏幕大。
如果您打算使用winforms api。请查看calculating the DPI factor上的此博文。
答案 1 :(得分:6)
我已成功使用WpfScreenHelper 0.3.0.0,目前在Github或Nuget上, https://github.com/micdenny/WpfScreenHelper
它完成了.NET框架多年前应该做的事情。 我需要检查WPF中的任何屏幕上是否存在某些坐标,如下所示:
答案 2 :(得分:4)
只需使用WinForms。我不认为有直接的WPF等价物。
答案 3 :(得分:1)
您可以尝试SystemParameters.VirtualScreenWidth和相关参数。这可能不如继续使用WinForms API那样好。
我可以看到WinForms类型的唯一缺点是额外的依赖性和与此相关的更大的工作集。