Есть ли эквивалент WPF для System.Windows.Forms.Screen? - PullRequest
17 голосов
/ 24 апреля 2010

Я пытаюсь создать окно WPF, которое будет охватывать всю рабочую область рабочего стола. В WinForms я бы сделал это, получив Союз всех границ в System.Windows.Forms.Screen.AllScreens.

Существует ли эквивалентный тип или другой механизм для получения границ всего рабочего стола в WPF или мне нужно использовать тип WinForms?

Ответы [ 4 ]

14 голосов
/ 25 апреля 2010

Попробуйте свойства SystemParameters.VirtualScreen * (сверху, слева, по высоте и ширине). http://msdn.microsoft.com/en-us/library/system.windows.systemparameters.virtualscreenheight(v=VS.100).aspx

Не используйте winforms api, потому что он не учитывает тот факт, что единицы измерения WPF не являются пикселями. Я столкнулся с этой проблемой совсем недавно, потому что я теряю зрение, и мой монитор настроен на более высокое разрешение. Кодовая база, над которой я работал, использовала настройки Winforms, а пользовательский интерфейс был больше, чем мой экран.

Если вы собираетесь использовать API winforms. Посмотрите на этот пост в блоге , вычисляющий коэффициент DPI .

6 голосов
/ 14 мая 2016

Я успешно использовал WpfScreenHelper 0.3.0.0, в настоящее время на Github или Nuget, https://github.com/micdenny/WpfScreenHelper

Он делает то, что должен был сделать .NET Framework много лет назад. Мне нужно было проверить, существуют ли какие-либо координаты на каком-либо экране в WPF, например:

4 голосов
/ 24 апреля 2010

Просто используйте WinForms. Я не думаю, что существует прямой эквивалент WPF.

1 голос
/ 25 апреля 2010

Вы можете попробовать SystemParameters.VirtualScreenWidth и связанные параметры. Это может не дать такого хорошего результата, как продолжение работы с WinForms API.

Единственный недостаток, который я вижу в типе WinForms, - это дополнительная зависимость и связанный с ней больший рабочий набор.

...