WinForms как рисовать вне Overlay_Paint(object sender, PaintEventArgs e)?

Имею отдельный класс, в котором хочу отрисовывать фигуры:

internal class Drawer
    {
        private Graphics Graphics;
        public Drawer(Form form)
        {
            Graphics = form.CreateGraphics();
        }
        public void DrawBox(Rectangle rectangle, Color color)
        {
            Pen pen = new Pen(color, 5);
            Graphics.DrawRectangle(pen, rectangle);
        }
    }

Но если сделать так, то изменения не будут видны

public partial class Overlay : Form
    {
        private Drawer drawer;
        public Overlay()
        {
            InitializeComponent();
            this.Size = new Size(1920, 1080);
        }

        private void Overlay_Load(object sender, EventArgs e)
        {
            drawer = new Drawer(this);
            Draw();
        }

        private void Draw()
        {
            drawer.DrawBox(new Rectangle(0, 0, 500, 500), Color.Red);
        }

        private void Overlay_Paint(object sender, PaintEventArgs e)
        {
            // если вызвать здесь Draw(), то все заработает, но мне так не нужно
        }
    }

Но что если я хочу рисовать независимо, вне этой функции? Может есть возможность обновлять вручную, вместо использования ивентов? Как вынести это все в тот класс?


Ответы (0 шт):