在我的程序中,我有一个窗口,用户在屏幕上定位他要拍照的部分。
然后,当他点击按钮拍照时,我的程序orderOut
是窗口,截取屏幕截图,再次显示窗口,现在有一个屏幕截图。
问题是,orderOut
似乎没有立即关闭窗口。因此,当我拍摄截图时,它通常会截取窗口本身的截图(应该已经关闭),这显然不是我想要的。
我可以在致电sleep(1)
后致电orderOut
来解决问题,但肯定有更好的方法吗?
答案 0 :(得分:2)
根据文件here。调用orderOut时,窗口会执行动画。因此,您可以通过将动画行为设置为none来删除orderOut动画:
[myWindow setAnimationBehavior:NSWindowAnimationBehaviorNone]
或使用NSObject方法 performSelector:withObject:afterDelay:在一定时间后执行屏幕截图操作x。假设NSWindow orderOut动画使用默认持续时间,则延迟将为0.2f。否则,您可以进行一些测试以检查您的案例中的合适值。