Добавить наложение для 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;
}
}
