【问题标题】:Take screenshot of screen behind form?截取表格后面的屏幕截图?
【发布时间】:2013-05-24 16:59:27
【问题描述】:

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

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

这在一定程度上有效,但问题是当我这样做时,它会导致屏幕每次闪烁。有什么办法让它不包括我的表格,但仍然把它背后的一切都拿走?

【问题讨论】:

    标签: c# winforms screen screenshot screen-capture


    【解决方案1】:

    您无法截取表单背后的内容,但您可以隐藏表单、截屏并再次显示表单。 如何做到这一点:

    1. 隐藏您的表单
    2. 等待一段时间,直到重新绘制屏幕。
    3. 截屏。
    4. 显示您的表单。

    您应该使用 Timer 类使 2 异步。

    祝你任务顺利。

    【讨论】:

    • 你确定根本没有办法实现这一点吗?因为我过去曾看到过执行此类操作的应用程序。
    • 这也会导致表单闪烁吗?
    • 过去是电脑生成窗口,现在窗口完全绘制到显卡上,即使只显示部分窗口,它也会存储整个窗口,这就是为什么窗口7 可以显示一个隐藏窗口的小预览。有可能您可以在不隐藏/更改表单不透明度的情况下生成屏幕截图,但我不知道如何。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 2012-03-10
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    相关资源
    最近更新 更多