2017-02-02 1 views
2

J'essaye de redimensionner une fenêtre qui couvre tout l'écran.wpf redimensionner une fenêtre pour consommer tous les moniteurs

J'ai essayé à la suite

 win.Left = SystemParameters.VirtualScreenLeft; 
     win.Top = SystemParameters.VirtualScreenTop; 
     win.Width = SystemParameters.VirtualScreenWidth; 
     win.Height = SystemParameters.VirtualScreenHeight; 

Cela fonctionne parfaitement sur un écran de 1080p (Full HD moniteur). Il fonctionne également quand j'ai deux moniteurs attachés et l'un d'entre eux est Full HD où l'autre est un moniteur HD. Je comprends que dans ce cas, une partie de la fenêtre ne deviendra jamais visible car elle sortira des limites de l'actif total de l'écran.

Le problème commence avec le moniteur 4k. Sur un moniteur 4k, il consomme un rectangle plus petit à l'écran et ne couvre pas tout l'écran. Je comprends que cela est dû à la mise à l'échelle (wpf redimensionne automatiquement la fenêtre) mais ne parvient pas à trouver un moyen de résoudre ce problème.

Le problème est juste avec le moniteur 4k. Je suppose que cela a quelque chose à voir avec DPI puisque le moniteur 4k a un DPI plus élevé.

Ma question est, comment rendre l'application utilise l'actif écran entier indépendamment de la résolution du moniteur et DPI.

(S'il vous plaît noter que la fenêtre de réglage maximisé ne fonctionnera pas car il ne sera pas enjamber sur plusieurs moniteurs.)

Répondre

0

Il est avéré que la question n'a pas été avec le redimensionnement de la fenêtre du tout. La fenêtre était correctement redimensionnée après avoir spécifié les coordonnées. Cependant, il y a une chose qui pourrait aider ceux qui veulent faire la même chose. Assurez-vous toujours de comparer les valeurs extraites de l'API avec les autres valeurs de l'API et de WPF avec WPF, car WPF fournit des valeurs mises à l'échelle.