透明的自定义图形用户控件:在运行时变黑

时间:2018-11-20 16:46:35

标签: c# winforms user-controls transparency graphing

我有一个自定义图形用户控件,它支持透明的背景色。在设计过程中,用户控件正确显示。但是,在运行时,背景色变为黑色。

Chart on Runtime

我已经在stackoverflow上搜索了解决方案,但是大多数文章都涉及WPF或控制器。 :(

我尝试过的事情:

我尝试使用透明面板用户控件来容纳图形用户控件。这没有改变。我将图形用户控件设置为使用transparentpanel作为父级,什么也没有。

有人如何防止这种情况发生吗?谢谢。

更新1:如果我只是将图形用户控件添加到表单中并运行应用程序,则透明度仍然有效。开始绘图时似乎是一个问题。我尝试了以下解决方案。

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams parameters = base.CreateParams;
            parameters.ExStyle |= WS_EX_TRANSPARENT;
            return parameters;
        }
    }

    internal const int WS_EX_TRANSPARENT = 0x00000020;

我还尝试添加:

        this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false);

1 个答案:

答案 0 :(得分:1)

我有类似的问题。我搜索了Google并找到了答案。我不知道您用于自定义控件的代码,但请在OnPaint中查找如下所示的行:

e.Graphics.Clear(Color.Transparent);

与“透明”颜色一起使用的“清除”功能不会使您的自定义控件透明。它实质上将颜色绘制为整个控件透明。这可能会导致一些非常时髦的结果。