Comment collecter et modifier la résolution de l'écran à l'aide de Visual C #?
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.
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);
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;
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).
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;
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.