截取窗体背后的屏幕截图?

时间:2013-05-24 16:59:27

标签: c# winforms screen screenshot screen-capture

我正在尝试使用屏幕形式的屏幕截图但是我不希望我的表单包含在屏幕截图中。这是我目前获取屏幕截图的代码。

Bitmap bt;
Graphics screenshot;
private void button1_Click_1(object sender, EventArgs e)
{
    this.Opacity = 0;
    bt = new Bitmap(Screen.FromControl(this).Bounds.Width, Screen.FromControl(this).Bounds.Height, PixelFormat.Format32bppArgb);
    screenshot = Graphics.FromImage(bt);
    screenshot.CopyFromScreen(Screen.FromControl(this).Bounds.X, Screen.FromControl(this).Bounds.Y, 0, 0, Screen.FromControl(this).Bounds.Size, CopyPixelOperation.SourceCopy);
    pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
    pictureBox1.Image = bt;
    this.Opacity = 1;
}

这在一定程度上起作用,但问题在于,当我这样做时,每次都会导致屏幕闪烁。有没有办法让它不包括我的形式,但仍然把它背后的一切?

1 个答案:

答案 0 :(得分:1)

您无法截取表单背后的内容,但您可以隐藏表单,拍摄屏幕截图并再次显示表单。 怎么做:

  1. 隐藏表单
  2. 等待一段时间,直到屏幕重新粉刷。
  3. 截取屏幕截图。
  4. 显示表单。
  5. 你应该使用Timer类使2异步。

    祝你好运。