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;
}
然后您可以裁剪一部分用作子控件的背景。
如何检索表单的拉伸图像?当我使用 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;
}
然后您可以裁剪一部分用作子控件的背景。