Кнопка произвольной формы

С помощью свойства Region можно сделать кнопку любой формы. У нас нет необходимости создавать элементы управления, мы можем испольовать уже готовые. Давайте создадим метод, который будет делать кнопку овальной формы.
Поместим на нашу форму обычную кнопку (рис. 1)


Рис. 1 Добавление кнопки
Теперь перейдем в редактор кода и создадим метод, который будет преобразовывать форму нашей кнопки в овальную:

//добавляем необходимое простанство имен:
using System.Drawing.Drawing2D;

 

void OvalForm(Button btn)
{
   GraphicsPath gp = new GraphicsPath();
   Graphics g = CreateGraphics();

   //Создаем новый прямоуголник с размерами кнопки
   Rectangle rect = btn.ClientRectangle;

   //уменьшаем размеры прямоуголника
   rect.Inflate(-3, -3);

   //создаем эллипс
   gp.AddEllipse(rect);
   btn.Region = new Region(gp);

   //рисуем рамку для овальной кнопки
   g.DrawEllipse(new Pen(Color.Black, 2),
   btn.Left + 1, btn.Top + 1,
   btn.Width - 3, btn.Height - 3);

   //высвобождаем память
   g.Dispose();
}

Теперь создадим обработчик события для кнопки и поместим в него кледующий код:

private void button1_Click(object sender, EventArgs e)
{
   OvalForm(button1);
}

При нажатии на кнопку её форма меняется (рис. 2)

Рис. 2 Новая форма кнопки

Поделиться в соц. сетях

Опубликовать в Facebook
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Google Buzz
Опубликовать в Одноклассники
Опубликовать в Яндекс
Опубликовать в Мой Мир

Похожие статьи

Один комментарий на “Кнопка произвольной формы”

  • avatar Вано:

    Чтобы кнопка была такой постоянно, нужно переопределить метод:

    protected override void OnPaint();
    

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