165 votes

Comment puis-je obtenir les dimensions de l'écran actif?

Ce que je recherche, c’est l’équivalent de System.Windows.SystemParameters.WorkArea pour le moniteur sur lequel la fenêtre se trouve actuellement.

Précision: la fenêtre en question est WPF, pas WinForms.

169voto

Jeff Yates Points 36725

Screen.FromControl , Screen.FromPoint et Screen.FromRectangle devraient vous aider avec cela. Par exemple dans WinForms, ce serait:

 class MyForm : Form
{
  public Rectangle GetScreen()
  {
    return Screen.FromControl(this).Bounds;
  }
}
 

Je ne connais pas d'appel équivalent pour WPF. Par conséquent, vous devez faire quelque chose comme cette méthode d'extension.

 static class ExtensionsForWPF
{
  public static System.Windows.Forms.Screen GetScreen(this Window window)
  {
    return System.Windows.Forms.Screen.FromHandle(new WindowInteropHelper(window).Handle);
  }
}
 

67voto

Pyttroll Points 477

Vous pouvez l'utiliser pour obtenir de l'espace de travail de bureau limites de l'écran principal:

System.Windows.SystemParameters.WorkArea

C'est également utile pour obtenir la taille de l'écran principal:

System.Windows.SystemParameters.PrimaryScreenWidth System.Windows.SystemParameters.PrimaryScreenHeight

36voto

742 Points 1005

Aussi, vous aurez peut-être besoin de:

pour obtenir la taille combinée de tous les moniteurs et non d'un en particulier.

14voto

faulty Points 3342

Ajouter à ffpf

 Screen.FromControl(this).Bounds
 

13voto

aDoubleSo Points 122

Méfiez-vous du facteur d'échelle de vos fenêtres (100% / 125% / 150% / 200%). Vous pouvez obtenir la taille réelle de l'écran en utilisant le code suivant:

 SystemParameters.FullPrimaryScreenHeight
SystemParameters.FullPrimaryScreenWidth
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X