我想通過C#覆蓋整個屏幕上的灰色,半透明區域。這可能通過Windows窗體來完成,我將如何去做這件事?屏幕覆蓋截圖
Q
屏幕覆蓋截圖
6
A
回答
8
當然,只需創建一個覆蓋所有桌面屏幕的無邊框半透明窗口即可。
您可以找到合適的矩形覆蓋所有屏幕具有以下LINQ:
Rectangle bounds = Screen.AllScreens
.Select(x => x.Bounds)
.Aggregate(Rectangle.Union);
然後設置左,上,寬度和窗口的高度,從bounds
2
除使用Johannes的建議將FormBorderStyle屬性設置爲None,我還會在此窗體上設置以下用於「調暗」屏幕的屬性:
- TopMost,Show InTaskBar,控制盒,MaximizeBox,MinimizeBox:「假
- Text屬性:清除它
我會設置在窗體的Load事件中的‘模糊了’窗體的尺寸:我會用優雅如果我想處理多個監視器的情況,Rob在Rob的答案中設置了添加到項目中的Form的邊界。如果我只是想只處理了一個監視器,我只是不喜歡簡單的東西:
// in the Load Event of the "dim-out" Form
this.Bounds = Screen.PrimaryScreen.Bounds;
然後,當然,你可以顯示這個「模糊了」表格時您在響應任何有關需要您可見的表單。
顯示「暗淡」窗體將使其出現在應用程序的其他可見窗體上(除非其中一個窗體已設置了TopMost或TopLevel屬性)。
但是,您可以實現的一個很好的效果是在顯示MessageBox(或模式顯示的窗體)之前顯示您的「模糊」窗體:這意味着您將有消息框對話框(或模式窗體) 「在前面」以及其後面的所有內容「變暗」。
因此,這裏是你的代碼如何顯示「變暗」的形式看起來:
dimmedForm.Show();
// change these to suit your taste or purpose
// this.BringToFront();
// dimmedForm.BringToFront();
// example of showing a MessageBox over the dimmedForm
// which will block the current thread
MessageBox.Show("why not ?");
// now hide the dimmedForm
dimmedForm.Hide();
你可能想看看「頂層屬性(它不是在設計時暴露的),並刷新您對該財產如何影響屏幕上的表單順序以及檢查表單的TopMost屬性(在設計時暴露)的知識。
+2
我們需要一個「合併答案」功能:)(+1) – 2010-02-01 14:50:00
相關問題
- 1. Kinect帶屏幕截圖,覆蓋圖片
- 2. 從屏幕截圖中排除覆蓋應用程序圖標
- 3. SpriteKit屏幕截圖的屏幕截圖
- 4. 滾動條覆蓋部分iPad Retina模擬器屏幕截圖
- 5. 屏幕截圖
- 6. 在整個屏幕上覆蓋圖形?
- 7. CSS圖像不覆蓋整個屏幕
- 8. 相機屏幕頂部的覆蓋圖
- 9. Android上的覆蓋屏幕
- 10. 覆蓋屏幕刷新率
- 11. Android覆蓋屏幕底部
- 12. 覆蓋屏幕睡眠
- 13. android:覆蓋來電屏幕
- 14. 覆蓋來電屏幕?
- 15. C++截取屏幕截圖
- 16. 截取屏幕截圖
- 17. 如何使視圖覆蓋儘管不同屏幕的屏幕
- 18. Webdriver屏幕截圖
- 19. UIWebView屏幕截圖
- 20. iPhone屏幕截圖
- 21. Roku屏幕截圖
- 22. C++屏幕截圖
- 23. ASP.NET屏幕截圖
- 24. iPhone:屏幕截圖
- 25. android屏幕截圖
- 26. UICollectionView屏幕截圖
- 27. 屏幕截圖未連接屏幕截圖的軟件(RDP)
- 28. 屏幕截圖按住屏幕截圖時卡住
- 29. 以當前屏幕的屏幕截圖
- 30. 以整個屏幕的屏幕截圖
嘿,也許你終於可以讓那該死的UAC提示很有用,如果你可以把你的窗口放在它的提示符上...... – 2010-02-01 12:52:44