如何使我的UserControl双缓冲且透明?

时间:2015-05-17 12:51:30

标签: c# .net winforms

我的控件是双缓冲以提高性能,我需要使其透明(或者更确切地说,我需要防止它覆盖父级的背景)。但是,我尝试过的所有方法(覆盖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);
    }
}

0 个答案:

没有答案