Есть ли WPF, эквивалентный System.Windows.Forms.Screen?

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

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

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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