如何在C#中对滚动窗口进行截屏

4

在C#中,最简单的方法是如何截取完整滚动窗口的屏幕截图?

我在这里看到了使用Web浏览器的例子,但在这种情况下,窗口是Windows桌面应用程序。

3个回答

1

你可以使用 WM_PRINT 和 WM_PRINTCLIENT 让 Windows 将 WM_PAINT 重定向到离屏缓冲区。这比屏幕截取更好,因为它确保了窗口的被遮挡部分(在其他窗口后面)仍然被绘制。如果你的目标窗口通过滚动子窗口位置来滚动,那么 WM_PRINT 应该适用。也许这也有助于你的情形。


0

只需要三行代码就足够了

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 是一个面板,其中包含所有要显示在图像中的控件,并具有扩展高度以容纳所有内部控件。包含该面板的窗体可能启用了滚动条。


-3

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


你是如何滚动的?比如说,当第一次滚动时,加载该部分后,进行截屏,检测截屏事件,然后再滚动到下一个部分? - cosmoloc
3
这是一个回答吗?天哪 :/ - rball
你应该添加一些代码,这样任何遇到类似问题的人都可以找到解决方案。 - Misiu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接