Непрямоугольная форма на C#


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



Начнем с будущей формы нашей формы (извините уж за тавтологию). Я выбрал такую – просто нарисовал в паинте, вы можете выбрать любую другую в интернете или тоже нарисовать самостоятельно.



Теперь создаем проект в Visual Studio (неважно, каким вы пользуетесь - Visual Studio 2015, 2013, 2010 – алгоритм действий одинаков для всех этих сред разработки) «Приложение Windows Forms». В проекте по умолчанию создается форма, у неё изменяем свойство FormBorderStyle на значение None.



Сейчас надо сделать созданный нами рисунок фоновым изображением. За это отвечает свойство BackgroundImage. Можно добавить файл в ресурсы, но проще импортировать изображение прямо с жесткого диска – оно добавится в проект автоматически.



Далее требуется убрать фон у формы. Это сделаем с помощью свойства TransparencyKey – там требуется выбрать цвет, который обрамляет наш «пузырь», в данном случае это White, белый.

Теперь мы можем запустить проект и увидим, что получили непрямоугольную форму – как и требовалось. Однако, мы ничего сделать с ней не можем – пропали кнопки управления (да и на самом деле, где они могут быть?): не получится закрыть или переместить. Проблема решается просто.

Создаем на форме новый элемент – кнопку (Button) и вешаем на него обработчик событий

private void button1_Click(object sender, System.EventArgs e)
{
   this.Close();
}
Теперь, при нажатии, форма будет закрываться, а приложение завершаться. Однако, наша непрямоугольная форма все еще не перемещается. Данная проблема тоже имеет решение. Для начала зададим пару переменных:

private Point mOff;
private bool flagMouseDown = false;
Дальше нам надо создать три обработчика: MouseDown, MouseMove и MouseUp.



Вот код:

    private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            int xOff;
            int yOff;

            if (e.Button == MouseButtons.Left)
            {
                xOff = -e.X - SystemInformation.FrameBorderSize.Width;
                yOff = -e.Y - SystemInformation.CaptionHeight -
                    SystemInformation.FrameBorderSize.Height;
                mOff = new Point(xOff, yOff);
                flagMouseDown = true;
            }  
        }

        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (flagMouseDown)
            {
                Point mousePos = Control.MousePosition;
                mousePos.Offset(mOff.X, mOff.Y);
                Location = mousePos;
            }
        }

        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                flagMouseDown = false;
            }
        }
Если кто хочет посмотреть на результат, то приложение с криволинейной формой можно скачать здесь. Итак, в этой статье мы научились создавать полноценные не прямоугольные формы с любыми криволинейными границами.

Вместо послесловия. Создание красивой, оригинальной программы – это не так уж сложно. Буквально за несколько часов можно создать интересную, уникальную программу, аналогов которой нет. Например, можно создать приложение для компьютера (или телефона) девушки, которое будет показывать слайдшоу с музыкой и выбранным фото. Или именная игра - все зависит только от вашей фантазии. А если вы не умеете писать программы, то всегда можете их заказать мне. Поверьте, цены вас приятно удивят. Пишите – up777up@yandex.ru или добавляйтесь в скайп up777up2 – мы вместе сделаем любую программу.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, си шарп, формы, Visual Studio




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.



Политика конфиденциальности
Оптимизация MySQL запросов: практика
Форматы изображений