×

VB.NET抓屏的另一实例

Kalet Kalet 发表于2009-03-20 12:00:14 浏览191 评论0

抢沙发发表评论


乐博网有载了一篇关于api抓屏的实例,本次载的是老外Jason Hensley写的抓屏,实现方式与上次不同,可以方便大家对比


''开发平台 VB.NET 2005 <Beta 2>VB.NET抓屏的另一实例





''Description: A basic example of using the new built-in Sub in the
'2.0 version of the dotNetFramework to capture the screen, or portion
'of the screen and putting the image in a picturebox. Then you have
'the option of saving the picturebox image to a JPEG file. This example
'just uses the basic SourceCopy raster on the screenshot. There
'are many raster-operations you can choose from.

''Update: Reworked the code to be compatible for VB.NET <Beta 2>. I
'also added a feature to hide the program when the screenshot is being
'taken.
'代码如下:
Public Class frmMain


Private Sub btnCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopy.Click


'Create the bitmap



Dim b As Bitmap = New Bitmap(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height)
Dim g As Graphics = Graphics.FromImage(b)


Dim s As Size = New Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height)


'See whether or not to hide the program before taking the
'screenshot.
If chkHide.Checked Then


Me.Hide()
'
'This is a short, sweet, and simple timeout code to pause
'for a specified amount of seconds. On my computer, 1 sec
'is more than enough time for my app to be out of the way
'to take the screenshot to keep it from capturing the app
'with it.
Dim t As DateTime = Now.AddSeconds(1)
'VB.NET抓屏的另一实例
Do : Application.DoEvents()
Loop Until Now.Second >= t.Second
'
'Copy the image from the screen. You can customize the size
'and postions to take the screenshot from.
g.CopyFromScreen(0, 0, 0, 0, s, CopyPixelOperation.SourceCopy)
'
'Show the app again after the screenshot has been taken.
Me.Show()


'Clear this variable from memory.
t = Nothing


Else


'Copy the image from the screen. You can customize the size
'and postions to take the screenshot from.
g.CopyFromScreen(0, 0, 0, 0, s, CopyPixelOperation.SourceCopy)


End If


'Load the copied image to the picturebox control.
pic.Image = b


'Clean up alittle.
g.Dispose()
b = Nothing


End Sub


Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click


Dim saveDlg As SaveFileDialog = New SaveFileDialog
Dim dlgResult As DialogResult = New DialogResult


'Set the filter to JPEG files only.
saveDlg.Filter = "JPEG Files (*.jpg)|*.jpg"
saveDlg.Title = "Select the file to save the image too."


dlgResult = saveDlg.ShowDialog


If dlgResult = Windows.Forms.DialogResult.OK Then


'Save the image contained in the picturebox.
pic.Image.Save(saveDlg.FileName)


End If


End Sub

VB.NET抓屏的另一实例

End Class



群贤毕至

访客