Добавить наложение для UserControl

Я пытаюсь создать свой UserControl в C#, Состоящий из квадратов, нарисованных м методе OnPaint. Требуется добавить возможность накладывать такие контролы друг на друга и они не перекрывали друг друга. Прозрачный фон не помог. Пробовал это реализовать через Region.Union, пока не помогло.

Вот кусок с контрола:

namespace Union_Control
{
    public partial class Union_control_test : UserControl
    {
        public Union_control_test()
        {
            InitializeComponent();
        }
        protected override void OnPaint(PaintEventArgs pevent)
        {
            BackColor = Color.Transparent;
            Region reg = new Region(new Rectangle(20, 20, 40, 40));
            reg.Union(new Rectangle(5, 5, 40, 40));
            pevent.Graphics.Clip = reg;
            pevent.Graphics.FillRectangle(Brushes.Red, pevent.ClipRectangle);
        }
    }
}

Область отрисовки контрола перекрывает другой такойже контрол


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

Автор решения: Alexander Petrov

Не рисуйте квадраты, а вырежьте регион из контрола.
Для этого задайте созданный регион свойству Region.

public class CustomControl : UserControl
{
    public CustomControl()
    {
        Region reg = new Region(new Rectangle(20, 20, 40, 40));
        reg.Union(new Rectangle(5, 5, 40, 40));
        this.Region = reg;
        //BackColor = Color.Red;
    }
}
→ Ссылка