Обучение Visual C# Вторник, 08.07.2025, 10:14
Меню сайта
Категории раздела
Работа с классами .Net Framework 4.0 [2]
Работа с контролами Visual C# 2010 [3]
Наш опрос
Оцените мой сайт
Всего ответов: 45
Статистика
Яндекс.Метрика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
<
Форма входа
Главная » 2011 » Ноябрь » 30 » Один из способов определения размеров экрана
16:57
Один из способов определения размеров экрана
Для программы важны пропорции размеров формы и дисплея
Поэтому очень важно знать размеры экрана
Существует много с способов определения размеров экрана, но я хочу продемонстрировать «свой» способ определения размеров
предположим у нас есть формочка с Label-ом на котором мы и увидим размеры экрана
Для этого мы воспользуемся двумя свойствами нашей формы:« WindowState» и «FormBorderStyle»
«WindowState» - атрибут определяющий размеры формы относительно дисплея
«FormBorderStyle» - атрибут определяющий присутствие рамки
поэтому мы можем перейти в Load нашей формы и написать такую вещь



int Form_Height;
int Form_Width;
private void Form1_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized;//расширяем форму на весь экран

Form_Height = this.Height; //считываем нашей размеры формы
Form_Width = this.Width;

label1.Text = Form_Width.ToString() +" : " + Form_Height.ToString();//выводим результаты на label1

this.WindowState = FormWindowState.Normal; //и не забываем вернуть форму в исходное положение
}



Теоретически, мы на окошке должны были увидеть размеры нашего экрана но получили несколько другие значения(например у моего дисплея размеры 1680 / 1050 пикселей а увидел я следующее 1688 / 1028). КАК Я ПОНЯЛ, это все потому, что мы не убрали рамку вокруг формы, поэтому её надо убрать при помощи свойства FormBorderStyle, имеющего такое значение, как None, при выборе которого рамки нашей формы становятся невидимыми, а размеры формы не изменяются (даже если окно развернуто, рамка остается, но ее видит только компьютер)

Поэтому в методе Load мы пишем такую вещь:



int Form_Height;
int Form_Width;
private void Form1_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized;//расширяем форму на весь экран
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;//убираем рамки

Form_Height = this.Height; //считываем нашей размеры формы
Form_Width = this.Width;

label1.Text = Form_Width.ToString() +" : "+ Form_Height.ToString();//выводим результаты на label1

this.WindowState = FormWindowState.Normal; //и не забываем вернуть форму в исходное положение
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;//возвращаем рамки
}



При сравнении результатов полученными при выполнении двух вариантов данной программы мы видим, что ничего не изменилось
«ПОЧЕМУ?!?»-сокрушался я и начал анализировать каждую строчку своего метода и понял, что ошибка кроется в первых двух строчках:

{
this.WindowState = FormWindowState.Maximized;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
}

поясню ошибку: вначале я распространил окошко по всему дисплею и только потом убираю рамку а нам надо наоборот, поэтому надо поменять эти две строчки местами и тогда мы получим:



int Form_Height;
int Form_Width;
private void Form1_Load(object sender, EventArgs e)
{
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;//убираем рамки
this.WindowState = FormWindowState.Maximized;//и только потом расширяем форму на весь экран

Form_Height = this.Height; //считываем нашей размеры формы
Form_Width = this.Width;

label1.Text = Form_Width.ToString() +" : "+ Form_Height.ToString();//выводим результаты на label1

this.WindowState = FormWindowState.Normal; //и не забываем вернуть форму в исходное положение
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;//возвращаем рамки
}



Ура! Мы наконец-то получили правильные размеры экрана. Но для полного счастья тут же мы можем задать и размеры нашей формы относительно экрана например коэффициент будет равен 4 и можем дописать метод



int Form_Height;
int Form_Width;
private void Form1_Load(object sender, EventArgs e)
{
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;//убираем рамки
this.WindowState = FormWindowState.Maximized;//и только потом расширяем форму на весь экран

Form_Height = this.Height; //считываем нашей размеры формы
Form_Width = this.Width;

label1.Text = Form_Width.ToString() +" : "+ Form_Height.ToString();//выводим результаты на label1

this.WindowState = FormWindowState.Normal; //и не забываем вернуть форму в исходное положение
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;//возвращаем рамки

this.Height = Form_Height / 4; //задаем ширину и высоту формы относительно размеров нашего дисплея
this.Width = Form_Width / 4;
}



Таким образом мы можем задать любые размеры для нашей формы

С уважением, ваш Саф-Ил
___________________________________________________

Теория - это когда процесс понятен, но ничего не работает
Практика - это когда все работает, но непонятно почему
Но они часто совпадают, когда ничего не понятно и ничего не работает
___________________________________________________
Категория: Работа с контролами Visual C# 2010 | Просмотров: 3159 | Добавил: Саф-Ил | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Календарь
«  Ноябрь 2011  »
Пн Вт Ср Чт Пт Сб Вс
 123456
78910111213
14151617181920
21222324252627
282930
Архив записей
Copyright Алексей Чеботарев aka BTR © 2025