在C#中,最简单的方法是如何截取完整滚动窗口的屏幕截图?
我在这里看到了使用Web浏览器的例子,但在这种情况下,窗口是Windows桌面应用程序。
在C#中,最简单的方法是如何截取完整滚动窗口的屏幕截图?
我在这里看到了使用Web浏览器的例子,但在这种情况下,窗口是Windows桌面应用程序。
你可以使用 WM_PRINT 和 WM_PRINTCLIENT 让 Windows 将 WM_PAINT 重定向到离屏缓冲区。这比屏幕截取更好,因为它确保了窗口的被遮挡部分(在其他窗口后面)仍然被绘制。如果你的目标窗口通过滚动子窗口位置来滚动,那么 WM_PRINT 应该适用。也许这也有助于你的情形。
只需要三行代码就足够了
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
是一个面板,其中包含所有要显示在图像中的控件,并具有扩展高度以容纳所有内部控件。包含该面板的窗体可能启用了滚动条。
我通过使用Win API并拍摄多个屏幕截图,在每个屏幕截图之间滚动,然后将它们合并在一起来解决了这个问题。