【发布时间】:2011-09-28 09:10:03
【问题描述】:
我的问题与这个有关:How to get a screen capture of a .Net WinForms control programmatically?
我想在 C# 中截取 System.Windows.Forms.Control 的屏幕截图。我正在使用上面链接的问题中建议的 DrawToBitmap 方法,并且大部分时间都有效。但是也有一些问题。
问题 1:
我有两个标签页,我们称它们为 A 和 B。我要截屏的控件在标签页 B 中。我想在按下标签页 A 中的按钮时截屏。这在大多数情况下都有效,除非尚未访问标签页 B:然后屏幕截图只是白色的。如果我首先访问标签页 B,然后返回标签页 A 并单击按钮截取屏幕截图,则它可以正常工作。我猜这是因为尚未完成选项卡中控件的一些加载或构建,但我不确定到底是什么(或者它可能完全是其他东西)。我一直在尝试使用 ResumeLayout、PerformLayout、Show、Update、Invalidate 强制加载或构建,但这不起作用。
编辑:设法通过使用 DrawToBitmap 解决了这个问题包含标签页控件而不是控件本身并在该标签页上执行显示。
问题 2:
当我截取某个自定义控件(UserControl 的子类)的屏幕截图时,屏幕截图中有一个小的矩形白色区域(显然不应该有一个)。矩形区域不在控件的某个特定部分,如按钮或文本框,所以我不确定是什么原因造成的。在其他自定义控件(也是 UserControl 的子类)上,它工作正常,所以这本身不是问题。
编辑: 解决了,那里有一个空控件正在绘制最重要的是。将该控件的 Visible 设置为 false 解决了它。
【问题讨论】:
-
我在 .net 2.0 中将
DrawToBitmap与我的自定义控件一起使用,并且没有任何额外的白色矩形。你的控件有透明的部分吗?
标签: c# .net controls screenshot drawtobitmap