С помощью свойства Region можно сделать кнопку любой формы. У нас нет необходимости создавать элементы управления, мы можем испольовать уже готовые. Давайте создадим метод, который будет делать кнопку овальной формы.
Поместим на нашу форму обычную кнопку (рис. 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)
Чтобы кнопка была такой постоянно, нужно переопределить метод: