如何在C#中使UserControls BackColor透明化?

Rik*_*ika 2 c# user-controls drawing

我在Windows窗体用户控件中创建了一个简单的操作员(由单选按钮和三个标签以及一个进度条组成).

我将新用户控件的背景颜色设置为透明,这样当我将它拖到我的表单上时,它会与表单上的其他颜色和绘图混合.我没有得到我想要实现的目标.

这是图片:

在此输入图像描述

Han*_*ant 11

UserControl已经支持此功能,其ControlStyles.SupportsTransparentBackColor样式标志已经打开.您所要做的就是将BackColor属性设置为Color.Transparent.

接下来要记住这个透明度是模拟的,它是通过要求控件的Parent绘制自己来生成背景来完成的.所以重要的是你正确设置了Parent.如果父级不是容器控件,那么这有点棘手.像PictureBox一样.设计人员将表格作为父母,这样您就可以看到表格的背景,而不是图片框.您需要在代码中修复它,编辑表单构造函数并使其看起来类似于:

var pos = this.PointToScreen(userControl11.Location);
userControl11.Parent = pictureBox1;
userControl11.Location = pictureBox1.PointToClient(pos);
Run Code Online (Sandbox Code Playgroud)

  • @Hans Passant,我添加了usercontrol as,elementHost1.Parent = this; elementHost1.BackColor = Color.Transparent; elementHost1.Size = this.Size; elementHost1.Location = this.Location; 但是用户控件没有显示透明,请建议. (2认同)