Я хочу, чтобы BackGround моего UserControl выглядело так, будто его там нет. Я пытался сделать это так:
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;
}
и это работает, но мне также приходится вычислять BackGroundImage формы, которая является родительским элементом UserControl, каждый раз, когда изменяется его размер, и устанавливать BackGroundImageLayout формы в значение none. Мой UserControl мог бы взять BackGroundImage Parent и растягивать его каждый раз, когда ему нужно перерисовать, а затем просто взять его часть и установить его в качестве BackGroundImage, но Form рисует растянутый фон за пределами видимого прямоугольника. Тогда я вижу разницу, она не подходит.
Я сделал так, чтобы это работало, и оно соответствует BackGroundImage Родителя, но это много кода и замедляет мою программу при изменении размера.
Должен быть самый простой способ сделать это. Я не имею в виду использование ControlStyles.SupportsTransparentBackColor. Я хочу, чтобы это выглядело так, как будто не было фона UserControl.