我的控件是双缓冲以提高性能,我需要使其透明(或者更确切地说,我需要防止它覆盖父级的背景)。但是,我尝试过的所有方法(覆盖OnPaintBackground,设置ControlStyles.SupportsTransparentBackColor和BackColor = Transparent)只会使我的控件的背景变黑。
任何想法如何实现我的目标?
UPD示例代码:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
SetStyle(ControlStyles.Opaque, true);
BackColor = Color.Transparent;
UpdateStyles();
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.FillRectangle(Brushes.Red, 0, 0, Width / 2, Height);
}
}