如何在C#中截取滚动窗口的截图

时间:2012-02-15 17:01:48

标签: c# .net winforms screenshot

在C#中获取完整滚动窗口截图的最简单方法是什么?

我在这里使用网络浏览器进行了示例,但在这种情况下,该窗口是Windows桌面应用程序。

3 个答案:

答案 0 :(得分:1)

您可以使用窗口将WM_PAINT重定向到具有WM_PRINT和WM_PRINTCLIENT的屏幕外缓冲区。这比screenscraping更好,因为它确保窗口的遮挡部分(在其他窗口后面)无论如何都被绘制。如果目标窗口通过滚动子窗口位置滚动,则应该应用WM_PRINT。也许它也可以帮助您的方案。

答案 1 :(得分:0)

只需3行代码即可

Bitmap b = new Bitmap(pnlOuter.Width, pnlOuter.Height);
pnlOuter.DrawToBitmap(b, new Rectangle(0, 0, pnlOuter.Width, pnlOuter.Height));
b.Save("D:\\bitmapImage.jpg");

pnlOuter是一个面板,其中包含要在图像中显示的具有扩展高度的所有控件,以包含所有内部控件。包含的表单可能启用了滚动条。

答案 2 :(得分:-1)

我通过使用Win API并获取多个屏幕截图来解决这个问题,在每个屏幕截图之间滚动,然后将它们连接在一起。