2014-03-27 124 views
2

我有兩種形式。將圖像保存爲圖像(屏幕截圖)

  • 形式1包含我需要
  • 表2包含圖形繪製(這種形式是總在最前面,但透明)的屏幕截圖的內容。

我需要截屏的第一種形式,而不使其在形式2的頂部以及不包括從形式2.

這裏的內容有些什麼,我有工作,我正嘗試固定。

Private Function TakeScreenShot(ByVal Control As Control) As Bitmap 
    Dim Screenshot As New Bitmap(Control.Width, Control.Height) 
    Control.DrawToBitmap(Screenshot, New Rectangle(0, 0, Control.Width, Control.Height)) 
    Return Screenshot 
End Function 

此功能不起作用,因爲Control.drawtoBitmap不設置IMG的值。

IMG爲空白,並以普通白色圖像形式返回。

這個函數的調用是這樣的

TakeScreenShot(form1.webbrowser1).Save("c:\Screenshot.png", 
    System.Drawing.Imaging.ImageFormat.Png) 

所有幫助將不勝感激。

回答

10

這個替換您TakeScreenShot功能:

Private Function TakeScreenShot(ByVal Control As Control) As Bitmap 
    Dim tmpImg As New Bitmap(Control.Width, Control.Height) 
    Using g As Graphics = Graphics.FromImage(tmpImg) 
     g.CopyFromScreen(Control.PointToScreen(New Point(0, 0)), New Point(0, 0), New Size(Control.Width, Control.Height)) 
    End Using 
    Return tmpImg 
End Function 

這應該工作,但是,如果由於某種原因,它沒有這個問題可能是頂部透明形式。

你可以用同樣的方法調用它。

祝你好運:)

+0

This Works!你解決了我的問題! – beppe9000

+0

如果你不想捕捉你的窗口的客戶端部分,而是捕獲所有的窗口,只需要用這種方式改變g.CopyFormScreen指令 - > g.CopyFromScreen(Control.Location.X,Control.Location.Y,0,0, Control.Size,CopyPixelOperation.SourceCopy) – Fil