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

С помощью свойства 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 Новая форма кнопки

One comment

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

    protected override void OnPaint();
    

Leave a Reply

Your email address will not be published. Required fields are marked *

http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_bye.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_good.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_negative.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_scratch.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_wacko.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_yahoo.gif 
http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_cool.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_heart.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_rose.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_smile.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_whistle3.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_yes.gif 
http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_cry.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_mail.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_sad.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_unsure.gif  http://csharpcoding.org/wp-content/plugins/wp-monalisa/icons/wpml_wink.gif