将表单另存为图像(屏幕截图)

时间:2014-03-27 01:32:09

标签: vb.net forms bitmap controls screenshot

我有两种形式。

  • 表单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)

所有帮助将不胜感激。

1 个答案:

答案 0 :(得分:11)

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

这应该有效,但如果由于某种原因它不会出现问题,可能是顶部的透明形式。

你可以用完全相同的方式调用它。

祝你好运:)