在VB.NET中进行抓屏

'**********************************
'Author:wgscd
'功能:抓屏
'QQ153964481
'Date:2005-4-12
'*********************************

Public Class Form1
Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "

Public Sub New()
MyBase.New()

'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()

'在 InitializeComponent() 调用之后添加任何初始化

End Sub

'窗体重写处置以清理组件列表。
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer

'注意:以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改此过程。
'不要使用代码编辑器修改它。
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents Timer1 As System.Windows.Forms.Timer
Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
Friend WithEvents Button2 As System.Windows.Forms.Button

  1<system.diagnostics.debuggerstepthrough()> Private Sub InitializeComponent()   
  2Me.components = New System.ComponentModel.Container   
  3Me.Button1 = New System.Windows.Forms.Button   
  4Me.Timer1 = New System.Windows.Forms.Timer(Me.components)   
  5Me.PictureBox1 = New System.Windows.Forms.PictureBox   
  6Me.Button2 = New System.Windows.Forms.Button   
  7Me.SuspendLayout()   
  8'   
  9'Button1   
 10'   
 11Me.Button1.ForeColor = System.Drawing.Color.Black   
 12Me.Button1.Location = New System.Drawing.Point(8, 312)   
 13Me.Button1.Name = "Button1"   
 14Me.Button1.Size = New System.Drawing.Size(112, 32)   
 15Me.Button1.TabIndex = 0   
 16Me.Button1.Text = "抓屏"   
 17'   
 18'PictureBox1   
 19'   
 20Me.PictureBox1.Location = New System.Drawing.Point(8, 8)   
 21Me.PictureBox1.Name = "PictureBox1"   
 22Me.PictureBox1.Size = New System.Drawing.Size(392, 288)   
 23Me.PictureBox1.TabIndex = 4   
 24Me.PictureBox1.TabStop = False   
 25'   
 26'Button2   
 27'   
 28Me.Button2.ForeColor = System.Drawing.Color.Black   
 29Me.Button2.Location = New System.Drawing.Point(264, 312)   
 30Me.Button2.Name = "Button2"   
 31Me.Button2.Size = New System.Drawing.Size(112, 32)   
 32Me.Button2.TabIndex = 5   
 33Me.Button2.Text = "保存"   
 34'   
 35'Form1   
 36'   
 37Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)   
 38Me.BackColor = System.Drawing.Color.FromArgb(CType(192, Byte), CType(192, Byte), CType(255, Byte))   
 39Me.ClientSize = New System.Drawing.Size(408, 358)   
 40Me.Controls.Add(Me.Button2)   
 41Me.Controls.Add(Me.PictureBox1)   
 42Me.Controls.Add(Me.Button1)   
 43Me.ForeColor = System.Drawing.Color.FromArgb(CType(192, Byte), CType(255, Byte), CType(255, Byte))   
 44Me.Name = "Form1"   
 45Me.Text = "wgscd"   
 46Me.ResumeLayout(False) 
 47
 48End Sub 
 49
 50#End Region 
 51
 52  
 53'VB.NET中进行图象捕获 ,需要先引用一些API,以下是声明: 
 54
 55Private Declare Function CreateCompatibleDC Lib "GDI32" (ByVal hDC As Integer) As Integer 
 56
 57Private Declare Function CreateCompatibleBitmap Lib "GDI32" (ByVal hDC As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer) As Integer 
 58
 59Private Declare Function SelectObject Lib "GDI32" (ByVal hDC As Integer, ByVal hObject As Integer) As Integer 
 60
 61Private Declare Function BitBlt Lib "GDI32" (ByVal srchDC As Integer, ByVal srcX As Integer, ByVal srcY As Integer, ByVal srcW As Integer, ByVal srcH As Integer, ByVal desthDC As Integer, ByVal destX As Integer, ByVal destY As Integer, ByVal op As Integer) As Integer 
 62
 63Private Declare Function DeleteDC Lib "GDI32" (ByVal hDC As Integer) As Integer 
 64
 65Private Declare Function DeleteObject Lib "GDI32" (ByVal hObj As Integer) As Integer   
 66Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Integer) As Integer 
 67
 68Const SRCCOPY As Integer = &amp;HCC0020 
 69
 70'将以下代码添加到Button1_Click事件中: 
 71
 72  
 73Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
 74
 75Dim hDC, hMDC As Integer 
 76
 77Dim hBMP, hBMPOld As Integer 
 78
 79Dim sw, sh As Integer 
 80
 81hDC = GetDC(0) 
 82
 83hMDC = CreateCompatibleDC(hDC) 
 84
 85sw = Screen.PrimaryScreen.Bounds.Width 
 86
 87sh = Screen.PrimaryScreen.Bounds.Height 
 88
 89hBMP = CreateCompatibleBitmap(hDC, sw, sh) 
 90
 91hBMPOld = SelectObject(hMDC, hBMP) 
 92
 93BitBlt(hMDC, 0, 0, sw, sh, hDC, 0, 0, SRCCOPY) 
 94
 95hBMP = SelectObject(hMDC, hBMPOld) 
 96
 97PictureBox1.Image = Image.FromHbitmap(New IntPtr(hBMP)) 
 98
 99DeleteDC(hDC) 
100
101DeleteDC(hMDC) 
102
103DeleteObject(hBMP) 
104
105Me.Button2.Enabled = True 
106
107End Sub 
108
109Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
110
111Me.Button2.Enabled = False 
112
113End Sub   
114Dim ofd As New SaveFileDialog   
115Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
116
117ofd.Filter = "jpg file|*.jpg|bmp file|*.bmp" 
118
119Dim bmp As Bitmap = Me.PictureBox1.Image 
120
121If ofd.ShowDialog = DialogResult.OK Then   
122bmp.Save(ofd.FileName) 
123
124End If   
125End Sub   
126End Class</system.diagnostics.debuggerstepthrough()>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus