捕获屏幕,但不是C#中的当前形式?
我想捕获屏幕,但在没有当前表单的情况下,我尝试最小化->捕获->最大化,但如果存在,我正在寻找更好的解决方案。这是我的密码::捕获屏幕,但不是C#中的当前形式?,c#,screen-capture,C#,Screen Capture,我想捕获屏幕,但在没有当前表单的情况下,我尝试最小化->捕获->最大化,但如果存在,我正在寻找更好的解决方案。这是我的密码:: int w = this.Width; int h = this.Height; Size sz = this.Size; Point loc = this.Location; this.WindowState = FormWindowState.Minimized; System.Threading.Thread.S
int w = this.Width;
int h = this.Height;
Size sz = this.Size;
Point loc = this.Location;
this.WindowState = FormWindowState.Minimized;
System.Threading.Thread.Sleep(500);
using (Bitmap b = new Bitmap(w, h))
{
using (Graphics g = Graphics.FromImage(b))
{
g.CopyFromScreen(loc, new Point(0, 0), sz);
}
b.Save(Environment.CurrentDirectory + "\\slides\\screen.jpeg");
this.BackgroundImage = System.Drawing.Image.FromFile(@"slides\screen.jpeg");
}
this.WindowState = FormWindowState.Maximized;
我问是否有一种直接的方法可以将捕获的图像作为背景,而不保存它
试试看,尽管我注意到你的和我的都被表单边框略微偏移了
int w = this.Width;
int h = this.Height;
Size sz = this.Size;
Point loc = this.Location;
Hide();
System.Threading.Thread.Sleep(500);
using (Image b = new Bitmap(w, h))
{ using (Graphics g = Graphics.FromImage(b))
{
g.CopyFromScreen(loc, new Point(0, 0), sz); }
Image x = new Bitmap(b);
this.BackgroundImage = x;
}
Show();
试试看,尽管我注意到你的和我的都被表单边框略微偏移了
int w = this.Width;
int h = this.Height;
Size sz = this.Size;
Point loc = this.Location;
Hide();
System.Threading.Thread.Sleep(500);
using (Image b = new Bitmap(w, h))
{ using (Graphics g = Graphics.FromImage(b))
{
g.CopyFromScreen(loc, new Point(0, 0), sz); }
Image x = new Bitmap(b);
this.BackgroundImage = x;
}
Show();
只要在设计器中将窗体的不透明度设置为99,就不必隐藏它。不是一个功能,它是一个bug。@Hans这就是我正在做的,我很高兴(不透明度没关系,我已经解决了。与Win 7 PC上启用Aero有关;故事的寓意:截图时禁用Aero(Aero=无用功能)只要在designer中将表单的不透明度设置为99,你就不必隐藏它。这不是一个功能,而是一个bug。@Hans这就是我所做的,我很满意(不透明度没关系,我已经解决了。这与Win 7 PC上启用Aero有关;故事的寓意:截屏时禁用Aero(Aero=无用功能)只需将其设置为99,这样它就不会不可见:)将Visible设置为false实际上不起作用,您仍然可以在XP上看到它。直到所有其他重叠的窗口都完成绘制。只需将其设置为99,这样它就不会不可见:)将Visible设置为false实际上不起作用,您仍然可以在XP上看到它。直到所有其他重叠的窗户都画上了它们的画。你应该记录为什么500是一个特殊的数字。它比314好吗?我相信他用500来确保有足够的时间来进行一次模拟,因为我没有试过,得到了表格,100显示它变暗了。你应该记录为什么500是一个特殊的数字。它比314好吗?我相信他用500来确保有足够的时间来进行一场比赛,因为我没有试过,得到了表格,100显示它变暗了。。