如何在C#控件上允许透明背景?

时间:2012-11-06 01:11:17

标签: c# background controls transparent

我一直在四处寻找,我从未找到真正的直接答案。现在,我正在尝试

    public frmGameWindow()
    {
        InitializeComponent();
        SetStyle(ControlStyles.UserPaint, true);
        SetStyle(ControlStyles.SupportsTransparentBackColor, true);

    }
    private void frmGameWindow_Load(object sender, EventArgs e)
    {
        imgSrc.BackColor = Color.Transparent;
        lblName.BackColor = Color.Transparent;
    }

然而,它仍然使控件高于父级的背景颜色(在这种情况下,表单本身)。我正在尝试编写一个非常基本的游戏引擎来帮助我使用Visual Studio 2010标准安装中内置的严格功能进行C#研究。

1 个答案:

答案 0 :(得分:0)

覆盖控件&创建自己的可以覆盖方法。您可以尝试以下几个覆盖:

protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x00000020; //WS_EX_TRANSPARENT

        return cp;
    }
} 
protected override void OnPaintBackground(PaintEventArgs pevent)
{
    // Don't paint background
}