【问题标题】:How to take screen shot of Windows Form with Scroll Bar in c#如何在 C# 中使用滚动条截取 Windows 窗体的屏幕截图
【发布时间】:2013-11-13 21:33:16
【问题描述】:

我有一个 Windows 窗体应用程序。

表单很大,有滚动条可以查看整个内容。

我需要截取整个表单的屏幕截图(包括由于表单高度而超出屏幕的区域)。

我尝试了以下代码,但它只捕获了屏幕上可见的表单部分:

ScreenCapture sc = new ScreenCapture();
// capture entire screen, and save it to a file
Image img = sc.CaptureScreen();
// display image in a Picture control named imageDisplay
this.imageDisplay.Image = img;
// capture this window, and save it
sc.CaptureWindowToFile(this.Handle,"C:\\temp2.gif",ImageFormat.Gif);

我无法截取整个表单的屏幕截图。

谁能告诉我捕获整个表单的方法,包括由于滚动而隐藏的区域?

【问题讨论】:

  • 我不认为有一种自动的方式来做到这一点。您必须手动构建图像,即自己在代码中绘制图像中的每个控件。
  • 没有灵丹妙药,但有我的一个想法。您可以根据表单的滚动量拍摄这些照片。例如,您可以先获取前半部分,然后滚动到下半部分并获取其余部分。您必须将整个表单的内容高度除以可见区域高度,这样您才能知道每次需要滚动多少。
  • 谢谢你的回复……你是这个意思吗。我需要先拍摄可见区域的屏幕截图,然后向下滚动(使用代码)并再次拍摄屏幕截图..然后合并两个屏幕截图??

标签: c# winforms screenshot


【解决方案1】:

考虑将屏幕绘制为位图:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.drawtobitmap.aspx

但有一些限制,最大尺寸可能会受到限制,并且无法绘制富文本框。

【讨论】:

    【解决方案2】:

    您是否尝试过使用Control.DrawToBitmap,您可以在表单以及表单中的特定控件上使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多