如何以編程方式獲取.Net控件的圖片?如何以編程方式獲取.Net WinForms控件的屏幕截圖?
32
A
回答
48
每個控件都有一個叫做DrawToBitmap的方法。你不需要p/invoke來做到這一點。
Control c = new TextBox();
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(c.Width, c.Height);
c.DrawToBitmap(bmp, c.ClientRectangle);
3
對於支持它的WinForms控制,存在System.Windows.Forms.Control類的方法:
public void DrawToBitmap(Bitmap bitmap, Rectangle targetBounds);
這並不適用於所有的控制工作。然而,。第三方組件供應商有更全面的解決方案。
7
你可以得到一個.NET控制的圖像編程很容易地使用控制類的DrawToBitmap方法開始在.NET 2.0
這裏是在VB
Dim formImage As New Bitmap("C:\File.bmp")
Me.DrawToBitmap(formImage, Me.Bounds)
樣品
這裏,它是在C#:
Bitmap formImage = New Bitmap("C:\File.bmp")
this.DrawToBitmap(formImage, this.Bounds)
1
如果不是對合當你想要做的時候,你通常可以將它投射到基本控件類並在那裏調用DrawToBitmap方法。
5
Control.DrawToBitmap可讓您將大多數控件繪製到位圖上。這不適用於RichTextBox和其他人。如果你想捕獲這些,或者擁有其中一個的控件,那麼你需要像Jeff所建議的代碼項目文章http://www.codeproject.com/KB/graphics/imagecapture.aspx中所描述的那樣進行PInvoke。注意這些方法中的一些會捕獲屏幕上的任何內容,所以如果你有另一個窗口覆蓋你的控件,你會得到它。
1
Panel1.Dock = DockStyle.None ' If Panel Dockstyle is in Fill mode
Panel1.Width = 5000 ' Original Size without scrollbar
Panel1.Height = 5000 ' Original Size without scrollbar
Dim bmp As New Bitmap(Me.Panel1.Width, Me.Panel1.Height)
Me.Panel1.DrawToBitmap(bmp, New Rectangle(0, 0, Me.Panel1.Width, Me.Panel1.Height))
'Me.Panel1.DrawToBitmap(bmp, Panel1.ClientRectangle)
bmp.Save("C:\panel.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
Panel1.Dock = DockStyle.Fill
注:它的做工精細
2
這是如何做到這一點對整個Form
,而不僅僅是客戶端區域(沒有標題欄和其他敷料)
Rectangle r = this.Bounds;
r.Offset(-r.X,-r.Y);
Bitmap bitmap = new Bitmap(r.Width,r.Height);
this.DrawToBitmap(bitmap, r);
Clipboard.SetImage(bitmap);
相關問題
- 1. 如何以編程方式獲取android設備屏幕截圖?
- 2. 以屏幕截圖(以編程方式)
- 3. 以編程方式獲取Java applet的屏幕截圖
- 4. Android - 如何以編程方式抓取屏幕截圖
- 5. 以編程方式拍攝整個屏幕的屏幕截圖
- 6. 以Android編程的屏幕截圖問題以編程方式
- 7. 如何以編程方式獲取Excel單元格範圍的屏幕截圖?
- 8. 如何以編程方式截取DrawingSurface的屏幕快照
- 9. 如何以編程方式從PC獲取iphone當前屏幕截圖?
- 10. 如何以編程方式獲取android用戶主頁屏幕截圖?
- 11. 以編程方式抓取OSX中的屏幕截圖
- 12. 如何以編程方式在Sprite-Kit中截取屏幕截圖?
- 13. 如何以編程方式截取iPhone主屏幕
- 14. 如何在Android中以編程方式拍攝屏幕截圖?
- 15. 以編程方式在網絡中抓取屏幕截圖
- 16. 如何在Android中以編程方式截屏整個屏幕?
- 17. Android - 以編程方式截取屏幕截圖而不參考視圖/活動
- 18. 以編程方式編輯屏幕截圖
- 19. 以屏幕截圖並以編程方式發送
- 20. 以編程方式禁用App中的屏幕截圖
- 21. 如何獲取WPF Webrowser控件的屏幕截圖?
- 22. 如何獲取屏幕截圖圖片
- 23. 以WebBrowser控件的屏幕截圖
- 24. 如何以編程方式獲取屏幕DPI(linux,mac)?
- 25. iPhone/iPad:如何以編程方式獲取屏幕寬度?
- 26. 編寫一個Android應用程序以獲取屏幕截圖
- 27. Android以編程方式拍攝屏幕截圖
- 28. iOS以編程方式使用GPUImageview進行屏幕截圖
- 29. 以編程方式進行屏幕截圖,沒有狀態欄
- 30. 以編程方式限制屏幕截圖
這有點太模糊,試着解釋你想做什麼。沒有漫不經心的選票。 – 2008-11-05 18:22:12
沒有漫步?我認爲這個意思是非常清楚的。他想獲得控件的位圖表示。 – Will 2008-11-05 18:24:14