代码之家  ›  专栏  ›  技术社区  ›  HasanG Joe Dabones

.net中的透明用户控件

  •  1
  • HasanG Joe Dabones  · 技术社区  · 14 年前

    我正在尝试用用户控件制作一个web样式的按钮。我需要使用户控件的背景透明。如何在不隐藏控件的情况下执行此操作。我还需要透明的标签和图片盒。

    想做这样的东西: alt text

    this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
    this.BackColor = Color.Transparent;
    
    3 回复  |  直到 14 年前
        1
  •  5
  •   Hans Passant    14 年前

    您列出的所有三个控件都已启用ControlStyles.SupportsTransparentBackColor样式。只需在设计器的Web选项卡中设置BackColor属性。它是 非常

    否则这是一种幻觉,Windows窗体通过要求父控件在OnPaintBackground()方法中绘制自己来实现它,从而提供背景像素。一个不起作用的值得注意的事情是重叠的控件。您只看到父像素,而不是重叠控件的像素。这是可以修复的,但代码很复杂。

    唯一的透明选项是Form.TransparencyKey。这是真正的透明性,通过在视频适配器中使用覆盖来实现。问题是这只适用于顶级窗口。表单,而不是控件。

        2
  •  4
  •   Community gview    7 年前

    如果您想要“部分透明”,请参阅以下内容以获得更好的解决方案: Opacity of Buttons/TextBoxes - VB.NET

    (使用Alpha值设置背景色)

    我知道上面的示例是VB,但它也适用于C。:)

        3
  •  0
  •   Mojtaba Shateri Niasar    11 年前

    您可以使用以下代码:

      public ImageButton()
        {
          InitializeComponent();
    
          this.SetStyle(ControlStyles.Opaque, true);
          this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false);
        }
    
        protected override CreateParams CreateParams
        {
          get
          {
              CreateParams parms = base.CreateParams;
              parms.ExStyle |= 0x20;  
              return parms;
          }
        }