rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » VB.NET

VB.net抓屏截图并保存指定位置. (2009-10

首先效果如下:

这是我点了两下"重新获取"截得自己屏幕的结果.

程序需要两个按钮(btnSave;btnGet),一个PictureBox控件(Pic1)

下面是代码示例:

=============================CODE=========================================

Public Class frmScreen

Private Declare Function CreateCompatibleDC Lib "GDI32" (ByVal hDC As Integer) As Integer
    Private Declare Function CreateCompatibleBitmap Lib "GDI32" (ByVal hDC As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer) As Integer
    Private Declare Function SelectObject Lib "GDI32" (ByVal hDC As Integer, ByVal hObject As Integer) As Integer
    Private 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
    Private Declare Function DeleteDC Lib "GDI32" (ByVal hDC As Integer) As Integer
    Private Declare Function DeleteObject Lib "GDI32" (ByVal hObj As Integer) As Integer
    Declare Function GetDC Lib "user32" Alias "GetDC" (ByVal hwnd As Integer) As Integer
    Const SRCCOPY As Integer = &HCC0020

'以上是需要的API函数,直接写上就行了

‘下面是保存图像

 Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click         Try
            Dim bmp As Bitmap = PicCut.Image
            If Pic1.ShowDialog = DialogResult.OK Then
                bmp.Save(SavePic.FileName)
                MsgBox("保存图片成功!", 0, "提示")
            End If
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try

End Sub

’以下是截取图像

Private Sub btnGet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGet.Click
        Dim hDC, hMDC As Integer
        Dim hBMP, hBMPOld As Integer
        Dim sw, sh As Integer
        hDC = GetDC(0)
        hMDC = CreateCompatibleDC(hDC)
        sw = Screen.PrimaryScreen.Bounds.Width
        sh = Screen.PrimaryScreen.Bounds.Height
        hBMP = CreateCompatibleBitmap(hDC, sw, sh)
        hBMPOld = SelectObject(hMDC, hBMP)
        BitBlt(hMDC, 0, 0, sw, sh, hDC, 0, 0, SRCCOPY)
        hBMP = SelectObject(hMDC, hBMPOld)
       Pic1.Image = Image.FromHbitmap(New IntPtr(hBMP))
        DeleteDC(hDC)
        DeleteDC(hMDC)
        DeleteObject(hBMP)
    End Sub

 End Class

   ‘=================================CODE END==============================

 截得是全屏图像,自己试试效果吧! 

顶一下
(0)
踩一下
(0)