【问题标题】:Transparent Custom Graphing User Control: Turning Black on Runtime透明的自定义图形用户控件:在运行时变黑
【发布时间】:2018-11-20 16:46:35
【问题描述】:

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

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

我尝试过的事情:

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

是否有人对如何防止这种情况发生有任何意见?谢谢。

更新 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);

【问题讨论】:

  • 我从来没有遇到过要形成的圆形进度条的透明度问题。就在他们重叠的时候。这是直接在表格上。
  • 嗯,有什么不同?
  • 这和你的previous question有关吗? transparentpanel usercontrol是什么意思?这是CustomControl 还是UserControl(不同的东西)?您是否在某个时候将BackColor 设置为Color.Transparent?贴出绘图相关的代码。
  • I set the graphing usercontrol to use the transparentpanel as the parent 我猜这是你的问题。 WinForms 从来没有真正的透明度,只是复制父容器的背景。

标签: c# winforms user-controls transparency graphing


【解决方案1】:

我遇到了类似的问题。我搜索了谷歌并找到了我的答案。我不知道您的自定义控件的代码,但请在您的 OnPaint 中查找这样的一行:

e.Graphics.Clear(Color.Transparent);

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

【讨论】:

  • 这正是问题所在。哇。非常感谢你的帮助。问题解决了。
猜你喜欢
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2013-03-17
相关资源
最近更新 更多