Has*_*anG 1 .net c# vb.net user-controls winforms
我正在尝试使用用户控件创建一个Web样式按钮.我需要使用户控件的背景透明.如何在不使控件不可见的情况下执行此操作.我还需要透明的Label和PictureBox.
试图做这样的事情: 
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
this.BackColor = Color.Transparent;
Run Code Online (Sandbox Code Playgroud)
您列出的所有三个控件都已打开ControlStyles.SupportsTransparentBackColor样式.只需在设计器的Web选项卡中设置BackColor属性即可.这是非常不清楚为什么这不是对你不够好.
它是一种幻觉,Windows Forms通过要求Parent控件在OnPaintBackground()方法中绘制自身来实现它,因此它提供了背景像素.一个值得注意的不起作用的是重叠控件.您只能看到父像素,而不是重叠控件的像素.这是可以修复但代码很难看.
唯一的其他透明度选项是Form.TransparencyKey.这是真正的透明度,通过在视频适配器中使用叠加来实现.问题是这只适用于顶层窗户.表单,而不是控件.
这些限制是Windows窗体渲染模型中固有的,使用控件的单独窗口.Web浏览器没有相同的限制,它通过绘制来模拟控件.油漆层,通过不绘画使透明度变得微不足道.WPF也使用该渲染模型.