我的問題是與此相關的一個:How to get a screen capture of a .Net WinForms control programmatically?控制的C#屏幕截圖是白色
我想在C#中的System.Windows.Forms.Control的截圖。我使用上面鏈接的問題中提到的DrawToBitmap方法,大多數情況下都是有效的。但是有一些問題。
問題1:
我有兩個的TabPages,我們姑且稱之爲A和B.控制我想採取截圖的是在標籤頁B.我想借此截圖當標籤頁A中的按鈕按下。這在大多數情況下都是有效的,除非頁面B還沒有被訪問:那麼屏幕截圖只是白色。如果我第一次訪問標籤頁B,然後返回到標籤頁A並點擊按鈕來截取屏幕截圖,那麼它工作正常。我猜這是因爲在選項卡中的一些加載或構建控件尚未完成,但我不確定究竟是什麼(或者可能完全是其他內容)。我一直在試圖用ResumeLayout,PerformLayout,Show,Update,Invalidate強制加載或構建,但這不起作用。
編輯:在包含tabpage控件上使用DrawToBitmap
而不是控件本身並在該頁面上進行顯示來解決此問題。
問題2:
當我採取某種自定義控制(用戶控件的子類)的屏幕截圖有一個小的矩形白色區域中的屏幕截圖(其中不應該有一個很明顯)。矩形區域不在控件的某個特定部分,如按鈕或文本框,所以我不確定是什麼導致了這種情況。在其他自定義控件(也是UserControl的子類)上,它工作正常,所以不能成爲問題本身。
編輯:解決了它,那裏有一個空的控件被繪製在它的上面。設置可見爲該控件的錯誤解決了它。
我使用'DrawToBitmap'與我的自定義控件在.net 2.0中,並沒有任何額外的白色矩形。你的控件是否有透明部分? – Djole