我正在使用 c# Windows 表單開發一個應用程式,我有一個名為 Form1 的表單,其中有一個按鈕,在點擊這個按鈕后,我想拍下它后面的所有東西,除了 Form1 本身(不將 Form1 最小化),
。有什么想法或建議嗎?
。謝謝你!
uj5u.com熱心網友回復:
你可以使用硬代碼。其實光拍和其他工具的作業原理是這樣的。當你點擊截圖按鈕時,你可以在事件發生后關閉表單視窗并重新打開它,這是解決問題的基本方法... 請查看這個方法。我如何在沒有表單的情況下捕獲螢屏?
uj5u.com熱心網友回復:
如果你想要一個沒有隱藏、移動、最小化等的解決方案,你需要以下方法:
- EnumWindows() 來迭代所有視窗。這將給你提供從上到下的視窗。
- 不要忘記排除你自己的視窗 。
- 排除不可見的視窗。查看GetWindowLongPtr與
GWL_STYLE并與WS_VISIBLE進行比較。
- GetWindowRect()以獲得其大小 。
- PrintWindow()以獲得視窗的位圖,不管它是否在后臺 。
- 創建一個與VirtualScreen尺寸相當的位圖 。
- 使用DrawImage() 按照相反的順序(從下到上)繪制視窗。
我發現這樣做的速度相當快(在 2560x1440 的螢屏上,有 20 個可見視窗需要繪制,為 514 ms)。
限制條件:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/309677.html
標籤:
