C# Winforms 获取窗体的拉伸背景图片

C# Winforms Get a Form's Stretched Background Image

如何检索表单的拉伸图像?当我使用 MyForm.BackgroundImage 时,它会给我原始图像,但不会显示在表单上的拉伸图像。

如果我无法获取图像,是否可以通过 BackgroundImageLayout = Stretch 重新创建生成的图像?

我为什么要这样做: 我有一个不允许透明的控件。为了伪造透明度,我拍摄背景图像并为控件覆盖的部分创建图像。在我将 BackGroundImageLayout 设置为 none.

以外的任何其他值之前,此方法效果很好

非常感谢任何帮助,谢谢。

试试这个:

a) 设置窗体的背景图片(Base Control)。

this.BackgroundImage = <image>; 

b) 创建一个子控件并将其放在您的基本控件上。

c) 将子控件的停靠栏设置为填充。

this.childControl.Dock = DockStyle.Fill; 

d) 在基础控件构造函数中,将子控件的背景图片设置为基础控件的图片。像这样:

childControl.BackgroundImage = this.BackgroundImage; 

e) 设置子控件的背景图片布局为strech。

childControl.BackgroundImageLayout = ImageLayout.Stretch;

这将使您的子控件显示为透明。希望它能解决你的问题。

您可以 retrieve/re-create 拉伸表格背景图片,如下所示:

    private Bitmap getFormBackgroundImage()
    {
        Bitmap bmp = new Bitmap(this.ClientSize.Width, this.ClientSize.Height);
        using (Graphics g = Graphics.FromImage(bmp))
        {
            g.DrawImage(this.BackgroundImage,
                new Rectangle(0, 0, bmp.Width, bmp.Height));
        }
        return bmp;
    }

然后您可以裁剪一部分用作子控件的背景。