在C#中获取完整滚动窗口截图的最简单方法是什么?
我在这里使用网络浏览器进行了示例,但在这种情况下,该窗口是Windows桌面应用程序。
答案 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并获取多个屏幕截图来解决这个问题,在每个屏幕截图之间滚动,然后将它们连接在一起。