最近我在項目中遇到一個讓我十分頭疼的問題,就是我在截屏時也将截屏之前隐藏的控件也截入了。
情況:我在Winform窗體有個截屏功能按鈕,實作在調用WPF全屏後截屏,但在截屏WPF界面前将界面裡的一個Label标簽提示語隐藏掉。這個讓我感到十分的奇怪的是,我隐藏的代碼明明寫在截屏代碼之前,按照同步線程,
在執行完隐藏控件代碼之後才進入截屏代碼的,而且我用MessageBox彈框測試了下,确認在截屏之前控件是隐藏的。
方法一:
我谷歌搜尋分析了很久,發現可能是隐藏控件需要一定的時間,截圖前調用了hide,但hide尚未完成時就截了圖了。後來加入了線程Sleep,但是還是不行,發現因為sleep阻塞的是hide所在的線程,是以我就起個線程hide,這樣就可以截屏了。
方法二:
将隐藏控件放入截屏功能按鈕MouseEnter事件裡,這樣就在點選事件之前就将控件隐藏了。如果想顯示控件不想截屏,也可以在MouseLeave事件裡顯示該控件即可。