我的问题与此有关:如何以编程方式获取 .Net WinForms 控件的屏幕截图?
我想在 C# 中截取 System.Windows.Forms.Control 的屏幕截图。我正在使用上面链接的问题中建议的 DrawToBitmap 方法,并且大部分时间都有效。但是也有一些问题。
问题1:
我有两个标签页,我们称它们为A和B。我要截屏的控件在标签页B中。我想在按下标签页A中的按钮时截屏。这在大多数情况下都有效,除非尚未访问标签页 B:然后屏幕截图只是白色的。如果我首先访问标签页 B,然后返回标签页 A 并单击按钮截取屏幕截图,则它可以正常工作。我猜这是因为尚未完成选项卡中控件的一些加载或构建,但我不确定究竟是什么(或者它可能完全是其他东西)。我一直在尝试使用 ResumeLayout、PerformLayout、Show、Update、Invalidate 强制加载或构建,但这不起作用。
编辑:设法通过使用解决这个问题DrawToBitmap
在包含的标签页控件而不是控件本身上并在该标签页上执行 Show。
问题 2:
当我截取某个自定义控件(UserControl 的子类)的屏幕截图时,屏幕截图中有一个小的矩形白色区域(显然不应该有)。矩形区域不在控件的某个特定部分,如按钮或文本框,所以我不确定是什么原因造成的。在其他自定义控件(也是 UserControl 的子类)上,它工作正常,所以这本身不是问题。
编辑:解决了,有一个空控件被绘制在它上面。将该控件的 Visible 设置为 false 解决了它。