background img

The New Stuff

Нестандартные формы

Как известно красивый интерфейс у приложений это большой плюс, так как пользователю программного обеспечения приятней работать с красивой формой, на которой размещение  красивые кнопочки, разноцветные подсказки и т.д. чем з серой стандартной формой.
Так как большинство (начинающих программистов) разрабатывают свои приложения на Windows Forms и в отличии от WPF у него нет возможности разработки красивого интерфейса, то я решил написать данную статью.
1. Создаем в своем любимом графическом редакторе картинку, которая будет выступать формой нашего окна. Не нужную область (область которую мы хотим сделать прозрачной) обязательно закрашиваем в черный цвет. На основании этого цвета и будет производиться «формовка» окна.

2.  Создаем в Microsoft Visual Studio новый проект оконной программы Windows Forms Application.
3. В свойствах формы устанавливаем свойство FormBorderStyle в None. В качестве BackgroundImage указываем изображение, которое создали в первом пункте. В свойстве TransparencyKey указываем черный цвет (тот цвет, которым закрасили не нужную область изображения).
4. Установка FormBorderStyle в None приводит к исчезновению строки заголовка окна с кнопками сворачивания/разворачивания и закрытия окна, поэтому нужно создать эти кнопки вручную. Добавляем из ToolBox две обычные кнопки (Button) для закрытия и сворачивания окна. Одной в свойстве Text указываем «X», а другой «_». 


5. Для кнопки «X» обрабатываем событие Click из Properties->Events и описываем процедуру закрытия окна:

1.private void butMinimize_Click(object sender, EventArgs e)
2.{
3. this.Close();
4.}

аналогично и для кнопки сворачивания окна «_» обрабатываем событие:

1.private void butMinimize_Click(object sender, EventArgs e)
2.{
3. this.WindowState = FormWindowState.Minimized;
4.}

Вот теперь наше окно можно свернуть и закрыть. Вроде все хорошо но хочется еще чтоб форму можно било мышкой перетаскивать, для этого создаем новую публичную переменную mouse_offset типа Point:

1.public Point mouse_offset;

Для формы обрабатываем события MouseDown, и описываем в нем процедуру инициализации переменной mouse_offset:

1.private void TestForms_MouseDown(object sender, MouseEventArgs e)
2.{
3. mouse_offset = new Point(-e.X, -e.Y);
4.}

та событие MouseMove в которой будет определение текущих координат курсора и перемещение формы:

01.private void TestForms_MouseMove(object sender, MouseEventArgs e)
02.{
03. if (e.Button == MouseButtons.Left)
04. {
05.  Point mousePos = Control.MousePosition;
06.  mousePos.Offset(mouse_offset.X, mouse_offset.Y);  //определяем текущие координаты курсора
07.  Location = mousePos;  //перемещаем форму
08. }
09.}

Все теперь компилируем проект и смотрим на результат ;)
В этой статье я рассказал как с помощью графических редакторов и Вашей фантази можно создать красивый интерфейс для WinForms приложений.

Скачать проект.
Как известно красивый интерфейс у приложений это большой плюс, так как пользователю программного обеспечения приятней работать с красивой формой, на которой размещение  красивые кнопочки, разноцветные подсказки и т.д. чем з серой стандартной формой.
Так как большинство (начинающих программистов) разрабатывают свои приложения на Windows Forms и в отличии от WPF у него нет возможности разработки красивого интерфейса, то я решил написать данную статью.
1. Создаем в своем любимом графическом редакторе картинку, которая будет выступать формой нашего окна. Не нужную область (область которую мы хотим сделать прозрачной) обязательно закрашиваем в черный цвет. На основании этого цвета и будет производиться «формовка» окна.

2.  Создаем в Microsoft Visual Studio новый проект оконной программы Windows Forms Application.
3. В свойствах формы устанавливаем свойство FormBorderStyle в None. В качестве BackgroundImage указываем изображение, которое создали в первом пункте. В свойстве TransparencyKey указываем черный цвет (тот цвет, которым закрасили не нужную область изображения).
4. Установка FormBorderStyle в None приводит к исчезновению строки заголовка окна с кнопками сворачивания/разворачивания и закрытия окна, поэтому нужно создать эти кнопки вручную. Добавляем из ToolBox две обычные кнопки (Button) для закрытия и сворачивания окна. Одной в свойстве Text указываем «X», а другой «_». 


5. Для кнопки «X» обрабатываем событие Click из Properties->Events и описываем процедуру закрытия окна:

1.private void butMinimize_Click(object sender, EventArgs e)
2.{
3. this.Close();
4.}

аналогично и для кнопки сворачивания окна «_» обрабатываем событие:

1.private void butMinimize_Click(object sender, EventArgs e)
2.{
3. this.WindowState = FormWindowState.Minimized;
4.}

Вот теперь наше окно можно свернуть и закрыть. Вроде все хорошо но хочется еще чтоб форму можно било мышкой перетаскивать, для этого создаем новую публичную переменную mouse_offset типа Point:

1.public Point mouse_offset;

Для формы обрабатываем события MouseDown, и описываем в нем процедуру инициализации переменной mouse_offset:

1.private void TestForms_MouseDown(object sender, MouseEventArgs e)
2.{
3. mouse_offset = new Point(-e.X, -e.Y);
4.}

та событие MouseMove в которой будет определение текущих координат курсора и перемещение формы:

01.private void TestForms_MouseMove(object sender, MouseEventArgs e)
02.{
03. if (e.Button == MouseButtons.Left)
04. {
05.  Point mousePos = Control.MousePosition;
06.  mousePos.Offset(mouse_offset.X, mouse_offset.Y);  //определяем текущие координаты курсора
07.  Location = mousePos;  //перемещаем форму
08. }
09.}

Все теперь компилируем проект и смотрим на результат ;)
В этой статье я рассказал как с помощью графических редакторов и Вашей фантази можно создать красивый интерфейс для WinForms приложений.

Скачать проект.

0 коммент.:

Отправить комментарий

Popular Posts