2011-02-22 12 views
47

¿Cómo puedo recopilar y cambiar la resolución de pantalla con Visual C#?Obtener y establecer la resolución de pantalla

+5

¿Has visto [este artículo del proyecto de código] (http://www.codeproject.com/KB/cs/csdynamicscrres.aspx)? – Justin

+0

@Justin: agregue SystemInformation.PrimaryMonitorSize a la mezcla y publíquelo como respuesta. –

Respuesta

0

en Winforms, hay una clase de pantalla que puede usar para obtener datos sobre las dimensiones de la pantalla y la profundidad de color de todas las pantallas conectadas a la computadora. Aquí está la página de documentos: http://msdn.microsoft.com/en-us/library/system.windows.forms.screen.aspx

CAMBIANDO la resolución de la pantalla es más complicado. Hay una clase de resolución de terceros que envuelve el código nativo que de lo contrario se engancharía. Use su clase anidada CResolution para establecer la resolución de la pantalla a una nueva altura y ancho; pero entiendo que hacer esto solo funcionará para las combinaciones de altura/ancho que la pantalla realmente admite (800x600, 1024x768, etc., no 817x435).

69

Para recuperando la resolución de pantalla, va a querer usar la clase System.Windows.Forms.Screen. La propiedad Screen.AllScreens se puede usar para acceder a una colección de todas las pantallas en el sistema, o puede usar la propiedad Screen.PrimaryScreen para acceder a la pantalla principal.

La clase Screen tiene una propiedad llamada Bounds, que puede usar para determinar la resolución de la instancia actual de la clase. Por ejemplo, para determinar la resolución de la pantalla actual:

Rectangle resolution = Screen.PrimaryScreen.Bounds; 

para cambiar la resolución, las cosas se ponen un poco más complicado. This article (o this one) proporciona una implementación y explicación detalladas. Espero que esto ayude.

+0

Gracias. Es realmente facil Puede usar la resolución.Altura y resolución. Propiedades de ancho con estos comandos. –

+0

¿Hay alguna forma de no hacer esto para hacer esto? IE, algo que funcionaría con .net core? –

-1

Si se quiere recoger resolución de la pantalla se puede ejecutar el siguiente código dentro de una ventana de WPF (la ventana es lo que el this se referiría a):

System.Windows.Media.Matrix m = PresentationSource.FromVisual(this).CompositionTarget.TransformToDevice; 
Double dpiX = m.M11 * 96; 
Double dpiY = m.M22 * 96; 
+0

Aparentemente no funciona, con NullReferenceException. – ender

+0

Pregunta: _ "¿Cómo puedo recopilar y ** cambiar ** resolución de pantalla usando Visual C#?" _ – MickyD

6

En C# esto es cómo conseguir que la pantalla de resolución :

clic de botón o de la carga formulario:

string screenWidth = Screen.PrimaryScreen.Bounds.Width.ToString(); 
string screenHeight = Screen.PrimaryScreen.Bounds.Height.ToString(); 
Label1.Text = ("Resolution: " + screenWidth + "x" + screenHeight); 
3

Este código funcione a la perfección en WPF. Puede usarlo en carga de página o en clic de botón.

 string screenWidth =System.Windows.SystemParameters.PrimaryScreenWidth.ToString(); 

     string screenHeight = System.Windows.SystemParameters.PrimaryScreenHeight.ToString(); 

     txtResolution.Text ="Resolution : "+screenWidth + " X " + screenHeight; 
Cuestiones relacionadas