C#Winforms获取表单的拉伸背景图像

时间:2016-05-25 16:41:11

标签: c# image winforms stretch

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

如果我无法获取图像,可以从BackgroundImageLayout = Stretch重新创建生成的图像吗?

为什么我要这样做: 我有一个不允许透明度的控件。为了伪造透明度,我拍摄背景图像并为控件所覆盖的部分创建图像。这很有效,直到我将BackGroundImageLayout设置为除非之外的其他任何内容。

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

2 个答案:

答案 0 :(得分:2)

您可以检索/重新创建拉伸的表单背景图像,如下所示:

    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;
    }

然后你可以裁剪掉一部分作为儿童控件的背景。

答案 1 :(得分:1)

试试这个:

a)设置表单的背景图像(基本控件)。

this.BackgroundImage = <image>; 

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

c)将子控件的底座设置为Fill。

this.childControl.Dock = DockStyle.Fill; 

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

childControl.BackgroundImage = this.BackgroundImage; 

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

childControl.BackgroundImageLayout = ImageLayout.Stretch;

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