如何使用户控制BackGround透明?

时间:2011-05-31 08:16:09

标签: c# user-controls background parent transparent

我希望我的UserControl的BackGround看起来不像那里。我试着这样做:

if ((Parent != null) && (Parent.BackgroundImage != null))
{
    Bitmap backGroundImage = new Bitmap(Width, Height);
    Graphics.FromImage(backGroundImage).DrawImage(owner.BackgroundImage, 0, 0, new Rectangle(Location.X, Location.Y, Width, Height), GraphicsUnit.Pixel);
     this.BackgroundImage = (Image)backGroundImage;
}

并且它可以工作,但我还必须计算Form的BackGroundImage,它是UserControl的Parent,每次它的大小改变并将Form的BackGroundImageLayout设置为none。我的UserControl可以使用Parent的BackGroundImage并在每次需要重绘时拉伸它,然后只取一块并将其设置为BackGroundImage,但Form将其拉伸背景绘制在其可见矩形之外。所以我可以看到差异,它不适合。

我使它工作并且它适合Parent的BackGroundImage,但它是很多代码并且在调整大小时减慢了我的程序。

必须有一种最简单的方法。我不是指使用ControlStyles.SupportsTransparentBackColor。我希望它看起来就像没有UserControl的背景。

3 个答案:

答案 0 :(得分:4)

将usercontrol backcolor设为Transparent this.BackColor = Color.Transparent;

答案 1 :(得分:1)

你可以使用someUserControl.BackColor = Color.FromKnownColor(KnownColor.Transparent);和隐形的BackColor。

答案 2 :(得分:1)

  

如果你需要父母是透明的你   可以使用此代码:

 parent.BackColor = Color.Red;
 parent.TransparencyKey = parent.BackColor;