web-dev-qa-db-fra.com

Obtenir et définir la résolution de l'écran

Comment collecter et modifier la résolution de l'écran à l'aide de Visual C #?

60
Bruce Powell III

Pour récupérer la résolution de l'écran, vous allez vouloir utiliser le System.Windows.Forms.Screen classe. Le Screen.AllScreens La propriété peut être utilisée pour accéder à une collection de tous les affichages du système, ou vous pouvez utiliser le Screen.PrimaryScreen propriété pour accéder à l'affichage principal.

La classe Screen a une propriété appelée Bounds , que vous pouvez utiliser pour déterminer la résolution de l'instance actuelle de la classe. Par exemple, pour déterminer la résolution de l'écran actuel:

Rectangle resolution = Screen.PrimaryScreen.Bounds;

Pour changer la résolution, les choses se compliquent un peu. Cet article (ou celui-ci ) fournit une implémentation détaillée et une explication. J'espère que cela t'aides.

82
Donut

En C #, voici comment obtenir l'écran de résolution:

clic de bouton ou chargement de formulaire:

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

Ce code fonctionnera parfaitement dans WPF. Vous pouvez l'utiliser en chargement de page ou en clic.

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

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

      txtResolution.Text ="Resolution : "+screenWidth + " X " + screenHeight;
5
Chaithanya

dans Winforms, il existe une classe Screen que vous pouvez utiliser pour obtenir des données sur les dimensions de l'écran et la profondeur de couleur pour tous les écrans connectés à l'ordinateur. Voici la page de documentation: http://msdn.Microsoft.com/en-us/library/system.windows.forms.screen.aspx

MODIFIER la résolution de l’écran est plus délicat. Il existe une classe tierce Résolution qui englobe le code natif auquel vous seriez autrement connecté. Utilisez sa classe imbriquée CResolution pour définir la résolution de l’écran sur une nouvelle hauteur et une nouvelle largeur. mais comprenez que cela ne fonctionnera que pour les combinaisons hauteur/largeur prises en charge par l’affichage (800x600, 1024x768, etc., et non 817x435).

1
KeithS

Si vous souhaitez collecter la résolution d'écran, vous pouvez exécuter le code suivant dans une fenêtre WPF (la fenêtre est ce à quoi le this ferait référence):

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

J'ai passé beaucoup de temps à essayer de comprendre cela, car les appareils avec facteur de mise à l'échelle sont très difficiles à obtenir avec la taille réelle de l'écran en raison du facteur de mise à l'échelle, parfois 125% ou 150% lorsque les appels sont passés aux objets C #, La valeur renvoyée n'est pas la bonne pour le moment. Vous devez donc effectuer un appel API Windows pour obtenir le facteur de mise à l'échelle et appliquer le multiplicateur. La seule méthode de travail que j'ai trouvée pour les applications non WPF est la suivante.

https://stackoverflow.com/a/21450169

0
Oscar Marin