2010-11-08 27 views
19

Necesito cambiar las resoluciones de pantalla usando mi aplicación.Obtener resolución de pantalla

Cómo:

  1. Leer resolución actual
  2. cambiarlo mediante mi solicitud y luego regresar a la corriente de salida.

Gracias, Furqan

Respuesta

26

1) ¿Cómo se lee la resolución de pantalla actual ?

Obtener la resolución de pantalla actual es fácil y está integrada en el marco sin tener que profundizar en algo como la API GetSystemMetrics. La clase Screen contiene información sobre todos los dispositivos de visualización conectados al sistema. Así que para determinar la resolución del monitor principal, usted podría utilizar algo como:

Dim screenWidth as Integer = Screen.PrimaryScreen.Bounds.Width 
Dim screenHeight as Integer = Screen.PrimaryScreen.Bounds.Height 

que tratar con múltiples monitores, mira en la propiedad Screen.AllScreens, que devuelve una matriz de Screen objetos que corresponden a cada una de las pantallas conectadas a el sistema. A continuación, puede determinar (utilizando el código anterior) la resolución de cada una de las pantallas conectadas a la computadora mediante un bucle a través de la matriz de objetos Screen.

2) ¿Cómo cambio la resolución de pantalla actual de mi aplicación VB.NET?

Cambiar la resolución de la pantalla es un poco más difícil. Antes de seguir adelante, le advierto que una aplicación que ajusta la resolución de visualización del usuario es inesperada y potencialmente creates a hostile user environment. Sé que no usaría una aplicación que cambiara la resolución de mi pantalla sin permiso, y pensaría mucho en usar una que me obligara a hacerlo. Si está intentando crear un protector de pantalla, probablemente haya una manera mejor y más sencilla de hacer lo que quiera. Una vez dicho esto, se puede hacer desde VB.NET si está dispuesto a P/Invocar algunas funciones de la API de Windows.

La manera más simple si solo le preocupa el caso de un solo monitor es usar la función ChangeDisplaySettings, que le permite especificar el modo gráfico de la pantalla predeterminada (solo el monitor principal del usuario).

Para manejar el caso de múltiples monitores, necesitará usar la función EnumDisplayDevices para obtener información sobre todos los dispositivos de visualización conectados a la computadora, y la función ChangeDisplaySettingsEx para cambiar una pantalla en particular.

Consulte pinvoke.net para saber cómo declarar las firmas de las llamadas a la API de Windows en VB.NET. Una búsqueda en Google apareció this thread, aunque no he verificado el código de muestra que proporcionan.

Para modificar la resolución de la pantalla solo mientras se ejecuta su aplicación, y luego restaurarla cuando el usuario cierre su programa, querrá guardar la configuración de pantalla actual antes de modificarla y restaurarla (utilizando el mismo método) llamadas) cuando su aplicación sale.

+5

+1 ... ¡una aplicación no tiene ningún problema para cambiar la resolución de mi pantalla! Incluso los juegos (¿solían?) Arruinar esto por completo. –

4

Como llegar resolución de pantalla actual

Public Function ScreenResolution() As String 
     Dim intX As Integer = Screen.PrimaryScreen.Bounds.Width 
     Dim intY As Integer = Screen.PrimaryScreen.Bounds.Height 
     Return intX & " × " & intY 
End Function 

Cómo cambiar la resolución de pantalla actual - solution

Cuestiones relacionadas