我正在试图制作一个带有用户控件的网页样式按钮。我需要使User Control的背景透明。如何在不使控件不可见的情况下做到这一点。另外我需要透明的Label和PictureBox。.net中的透明用户控件
试图让这样的事情:你列出
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
this.BackColor = Color.Transparent;
我正在试图制作一个带有用户控件的网页样式按钮。我需要使User Control的背景透明。如何在不使控件不可见的情况下做到这一点。另外我需要透明的Label和PictureBox。.net中的透明用户控件
试图让这样的事情:你列出
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
this.BackColor = Color.Transparent;
所有三个控件已经有ControlStyles.SupportsTransparentBackColor风格开启。只需在设计器Web选项卡中设置BackColor属性。这是很不清楚为什么这对你不够好。
这是一种错觉,Windows窗体通过要求父控件在OnPaintBackground()方法中绘制自己以使其提供背景像素来实现它。一个不起作用的值得注意的事情是重叠控制。您只能看到父像素,而不是重叠控件的像素。这是可以修复的,但代码很糟糕。
唯一的其他透明度选项是Form.TransparencyKey。这是真正的透明度,通过在视频适配器中使用叠加层来实现。问题是这只适用于顶层窗口。表单,而不是控件。
这些限制是Windows窗体渲染模型中固有的,使用单独的窗口作为控件。 Web浏览器不具有相同的限制,它通过绘制它们来模拟控件。油漆层,通过不画而使透明度变得微不足道。 WPF也使用该渲染模型。
嗨@ hans-passant你能否请描述代码来解决这个问题?不管它是否丑陋。是的,我知道你已经回答了3年,但是我几天前刚发布了一个关于这个问题的问题,但没有得到答案。谷歌也没有帮助。我遇到的问题正是你所描述的问题:索引为0的控件与索引1重叠控件,但索引1的子项与索引0重叠。起初它看起来很疯狂,但现在你提到了它的工作方式,它使感。如何解决它?谢谢 – 2013-06-28 02:56:28
http://support.microsoft.com/kb/943454 – 2013-06-28 08:18:58
如果你的意思是你想要的“部分透明”,看到这样的很好的解决方案: Opacity of Buttons/TextBoxes - VB.NET
(设置使用Alpha值的背景色)
我知道上面的示例是VB,但它适用于C#也是如此。 :)
您可以使用此代码: ImageButton()是我的构造函数。
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;
}
}
我试图让网页样式按钮。我正在使用一个picturebox和一个标签。我希望标签,用户控件和picturebox背景透明。 – 2010-11-07 11:06:20
这是在winforms上? – anivas 2010-11-07 12:19:33
是的,我正在使用winforms – 2010-11-07 13:15:42