Goran Bibic Ответов: 2

Создать кнопку rectnagle


Создать закругленную кнопку

AddEllipse
работающий

Мне нужен AddRectang

Какое-то решение?

Что я уже пробовал:

GraphicsPath grPath = new GraphicsPath();
grPath.AddEllipse(0, 0, ClientSize.Width, ClientSize.Height);
this.Region = new System.Drawing.Region(grPath);
base.OnPaint(e);

2 Ответов

Рейтинг:
1
Рейтинг:
0

Maciej Los

GraphicsPath класс предоставляет несколько Методы (Система.Рисование.Drawing2D)[^]. Одним из них является GraphicsPath.AddRectangle Метод (Прямоугольник) (System.Рисование.Drawing2D)[^]. В нижней части страницы назначения вы найдете пример.

Если вы хотите создать кнопку с пользовательской формой, вы должны создать пользовательский класс, который наследуется от элемента управления. Видеть:
Советы по кнопкам .net от Мика Доэрти[^]
Практическое руководство: практическое руководство. | Майкрософт документы[^]
Пошаговое руководство: создание элемента управления Windows Forms, использующего преимущества функций времени разработки Visual Studio | Microsoft Docs[^]
Введение в элементы управления линиями и фигурами (Visual Studio) | Microsoft Docs[^]
Журнал кода: Shaped .NET Windows Forms[^]

Другой способ - переопределить OnPaint метод для вашего контроля.

public class TriangleButton :Button
{
    protected override void OnPaint(PaintEventArgs pevent)
    {
        Rectangle rect = this.ClientRectangle;
        using (GraphicsPath path = new GraphicsPath())
        {
			// draws triangle: /_\
			path.AddPolygon(new Point []{new Point(rect.X+rect.Width/2,rect.Y),new Point(rect.X,rect.Y+rect.Height),new Point(rect.X+rect.Width,rect.Y+rect.Height)});
			path.CloseFigure();
            this.Region = new Region(path);
            pevent.Graphics.FillPath(SystemBrushes.ButtonShadow, path); 
        }
    }
}


использование:
TriangleButton shb = new TriangleButton();
shb.Name = "ShapedButton1";
shb.Location = new Point(50, 50);
shb.Parent = this; //form


Удачи вам!


Goran Bibic

Его работа...радиус угла?


GraphicsPath grPath = новый GraphicsPath();

Rectangle rect = новый прямоугольник(0, 0, 128,128);
grPath.AddRectangle(прямоугольник);
этот.Регион = Новая система.Рисование.Регион(grPath);
база.OnPaint(e);

Goran Bibic

Как нарисовать прямоугольник...нет треугольника?

Maciej Los

Думать об этом. Кнопка-это прямоугольник...

Goran Bibic

Код работает...но кнопка-это треугольник, мне нужен прямоугольник...

Ваш код строка 6


// рисует треугольник: /_\