2010-04-24 26 views
14

Estoy tratando de crear una ventana WPF que abarque todo el área de trabajo de escritorio. En WinForms haría esto obteniendo la Unión de todos los límites en System.Windows.Forms.Screen.AllScreens.¿Hay un WPF equivalente a System.Windows.Forms.Screen?

¿Hay un tipo u otro mecanismo equivalente para obtener los límites de todo el escritorio en WPF o necesito usar el tipo de WinForms?

Respuesta

9

Pruebe las propiedades de SystemParameters.VirtualScreen * (arriba, izquierda, altura y ancho). http://msdn.microsoft.com/en-us/library/system.windows.systemparameters.virtualscreenheight(v=VS.100).aspx

No use winforms api porque no tiene en cuenta el hecho de que las unidades de medida de WPF no son píxeles. Me encontré con este problema recientemente porque estoy perdiendo la visión y tengo mi monitor configurado a una resolución mayor. La base de código en la que estaba trabajando utilizaba la configuración de Winforms y la UI era más grande que mi pantalla.

Si va a utilizar la API de winforms. Mira esta publicación de blog en calculating the DPI factor.

4

Simplemente use WinForms. No creo que haya un equivalente directo de WPF.

+1

malinterpreten hay WPF Equivalentes. Ver mi respuesta. –

+9

Oh? ¿Puede WPF informarnos sobre cada monitor individualmente? ¿Puede WPF decirle en qué pantalla está una ventana (como Screen.FromControl()?) – Qwertie

+3

¿Qué sucede si tiene varios monitores con el mismo tamaño? ¿Hay algún equivalente para manejar esto? y como Qwertie mencionó qué pantalla es? – Marek

1

Puede probar SystemParameters.VirtualScreenWidth y los parámetros asociados. Eso podría no proporcionar tan buenos resultados como continuar con la API de WinForms.

El único inconveniente que puedo ver con el tipo de WinForms es una dependencia adicional y el conjunto de trabajo más grande relacionado con eso.