C# 如何显示windows窗体后面的内容?

C# 如何显示windows窗体后面的内容?,c#,winforms,C#,Winforms,我需要显示windows窗体后面的内容。我想在启动时最小化表单,拍摄表单后面的东西的屏幕截图,并将屏幕截图设置为背景图像 我已尝试使用以下代码: this.WindowState = FormWindowState.Minimized; var X1 = this.PointToScreen(panel1.Location).X; var Y1 = this.PointToScreen(panel1.Location).X; var X2 = this.PointToScreen(panel2

我需要显示windows窗体后面的内容。我想在启动时最小化表单,拍摄表单后面的东西的屏幕截图,并将屏幕截图设置为背景图像

我已尝试使用以下代码:

this.WindowState = FormWindowState.Minimized;
var X1 = this.PointToScreen(panel1.Location).X;
var Y1 = this.PointToScreen(panel1.Location).X;

var X2 = this.PointToScreen(panel2.Location).X;
var Y2 = this.PointToScreen(panel2.Location).X;

Bitmap bitmap = new Bitmap(this.Width, this.Height);
Graphics g = Graphics.FromImage(bitmap);
g.CopyFromScreen(X1, Y1, X2, Y2, bitmap.Size);
this.BackgroundImage = bitmap;

this.WindowState = FormWindowState.Normal;
面板1位于表单的左上角,面板2位于表单的左下角

但是,当我运行此代码时,背景图像不会显示


我在c#

中使用windows窗体如果您确实需要设置窗体的背景图像,您可以在窗体的
加载
事件处理程序中添加以下代码:

var rect = this.RectangleToScreen(this.ClientRectangle);
Bitmap bitmap = new Bitmap(rect.Width, rect.Height);

//this.WindowState = FormWindowState.Minimized;    // If you use the Load event,
                                                   // you don't really need this line.
using (Graphics g = Graphics.FromImage(bitmap))
{
    g.CopyFromScreen(rect.Location, Point.Empty, bitmap.Size);
}
this.BackgroundImage = bitmap;
//this.WindowState = FormWindowState.Normal;       // Same here.
但是,如注释中所述,如果您只想显示表单背后的内容,那么该属性可能会很有用。它可以帮助您使窗体半透明:

this.Opacity = 0.5;

您甚至可以将表单设置为半透明(甚至完全透明),但其控件除外,如中所示。

您真的想出于某种原因设置表单的背景图像,还是只是想显示其背后的内容?您是否考虑使用属性(这将使窗体(半)透明)?您可能需要移动下面的代码行<代码> THE.WOWOSTATOR= FMLMOWDOWSTATION。代码>在
Graphics g=Graphics.FromImage(位图)之前的右边
@AhmedAbdelhameed如果我设置了不透明度属性,控件将无法完全显示opaque@ZoharPeled我尝试过移动
this.WindowState=FormWindowState.Minimized但它仍然不起作用。。。我猜那没用?谢谢!我会试试这个,让你知道它是怎么回事