'**********************************
'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 = &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()>