我有一个以全屏模式打开的父表单 Form1
。 Form1
中有一个按钮可以打开表单 Form2
(使用 .ShowDialog()
方法)。当窗体关闭时,程序捕获 Form1
的屏幕截图。但是在屏幕截图中我仍然可以看到 Form2
在关闭过程中仍然有一些不透明(我使用的是 Microsoft Windows 7 Pro
它通过减少窗体的不透明度)。
那么我如何知道 Form2
何时 100% 关闭,以便我可以截取程序的屏幕截图?
编辑:我正在使用 Graphics.CopyFromScreen Method在 Form1
中捕获屏幕截图。
Form2
通过 Form2
中的按钮点击关闭,使用 this.Close()
方法。
最佳答案
如果有办法确定 Windows 桌面管理器动画已经完成,那么它不在 .NET 本身中。您必须找到一个提供此详细信息的 native API(我不确定是否存在……我不知道是否存在)并通过 p/invoke 执行它。
我认为评论者/回答者 dotctor提供了几个不错的选择:只需延迟足够长的时间来解释动画,或者在关闭时将有问题的窗口移开(如果您确实重复使用相同的 Form2
实例,请将其移动在再次显示之前返回)。
也就是说,您也可以考虑使用 Control.DrawToBitmap()
做屏幕截图的方法,因为您似乎希望图像成为 Form1
窗口的全屏图像。它有一些限制(您可以在文档中阅读),但只要这些都不适用于您的情况,它可能是获取所需图像的更方便的方法。
关于c# - 如何知道对话框是否完全关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28557441/