_Q12_ Ответов: 1

Как добавить событие в класс painted shape?


Я не профессиональный программист. Этот код прекрасно работает и сейчас.
----------
Но я хочу добавить в этот класс событие, которое будет выглядеть так же, как событие clasic button, например:
private void BasicButon_Click(отправитель объекта, EventArgs e) { ... }
и запустите его из формы 1.
Я понятия не имею, как это осуществить.
Пожалуйста, измените мой код и внедрите в него эту функциональность события, а затем опубликуйте его в качестве ответа. Спасибо.

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

//custom class:
    class BasicButon
    {

        int size = 2;
        public int grf = 1;

        public void Draw(int x, int y,  PaintEventArgs e)
        {
            Point[] triunghi1 = { new Point(x + 12 * size, y + 3 * size), new Point(x + 12 * size, y - 3 * size), new Point(x + 17 * size, y) };

            switch (grf)
            {
                case 1:
                    e.Graphics.FillPolygon(new SolidBrush(Color.Red), triunghi1);//red
                    break;
                case 2:
                    e.Graphics.FillPolygon(new SolidBrush(Color.Blue), triunghi1);//blue
                    break;
            }
        }

    }


//and in Form1:
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            bb.grf = 1;
        }

        BasicButon bb = new BasicButon();

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            bb.Draw(20, 20, e);
        }

    }

1 Ответов

Рейтинг:
1

RickZeeland

Вместо того чтобы заново изобретать колесо, возможно, будет проще использовать стандартное кнопочное управление и переопределить метод OnPaint() метод, смотрите примеры здесь:
Создание кнопки во время выполнения в C#[^]
Создание Пользовательских Элементов Управления В C#[^]
Круглая кнопка в C#[^]

О, я почти забыл эту статью CodeProject RoundedButton Control, которую я улучшил. Получение границ, чтобы быть гладкой, может быть сложно:
RoundedButton Control - Демистифицирующий DrawArc[^]


_Q12_

Большое вам спасибо, мистер Рик. Я попробую код из ваших ссылок и обновлю здесь то, что нашел.