Как определить ширину/высоту экрана с помощью С#

Я хочу установить ширину/высоту Window динамически на основе максимальной ширины/высоты пользовательских экранов. Как я могу определить это программно.

Ответ 1

Для основного экрана:

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

(Обратите внимание, что есть также некоторые другие свойства, связанные с основным экраном, которые зависят от различных факторов: Full* и Maximised*)

Виртуальный экран:

SystemParameters.VirtualScreenWidth
SystemParameters.VirtualScreenHeight

Ответ 2

Если вам нужны конкретные размеры монитора, на котором работает ваша программа (если у кого-то работает более одного монитора), вы также можете использовать:

var helper = new WindowInteropHelper(this); //this being the wpf form 
var currentScreen = Screen.FromHandle(helper.Handle);

Это вернет объект экрана, ссылающийся на монитор, на котором работает программа. Оттуда вы можете использовать свойство currentScreen.Bounds.Width/Height (для полного размера) или currentScreen.WorkingArea.Width/Height (минус панель задач и т.д.) В зависимости от того, что вы хотите.

Ответ 3

использовать экранный объект

Screen.PrimaryScreen.Bounds.Width

Ответ 4

Вы можете использовать событие SizeChanged

SizeChanged="MyWindow_SizeChanged"

Затем в вашем обработчике событий

private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
        if (this.MinWidth > 0 && this.MinHeight > 0)
        {
            double HeightScaleFactor, WidthScaleFactor;
            HeightScaleFactor = e.NewSize.Height / this.MinHeight;
            WidthScaleFactor = e.NewSize.Width / this.MinWidth;            
            mainGrid.LayoutTransform = new ScaleTransform(HeightScaleFactor,          WidthScaleFactor);
        }
}

Где MainGrid является контейнером для всего содержимого в MyWindow