Screen snapshot : Screen Capture « GUI « VB.Net






Screen snapshot

  
Imports System.Windows.Forms
Imports System.Drawing
Public Class Form1
    Inherits System.Windows.Forms.Form
    Public Sub New()
        MyBase.New()
        InitializeComponent()
    End Sub
    Friend WithEvents MyPrintDocument As System.Drawing.Printing.PrintDocument
    Friend WithEvents MyPrintDialog As System.Windows.Forms.PrintDialog
    Friend WithEvents MyPictureBox As System.Windows.Forms.PictureBox
    Friend WithEvents Label1 As System.Windows.Forms.Label
    Friend WithEvents DataGrid1 As System.Windows.Forms.DataGrid
    Friend WithEvents MonthCalendar1 As System.Windows.Forms.MonthCalendar
    Friend WithEvents Label2 As System.Windows.Forms.Label
    Friend WithEvents Label3 As System.Windows.Forms.Label
    Friend WithEvents MonthCalendar2 As System.Windows.Forms.MonthCalendar
    Friend WithEvents LinkLabel1 As System.Windows.Forms.LinkLabel
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.MyPrintDocument = New System.Drawing.Printing.PrintDocument()
        Me.MyPrintDialog = New System.Windows.Forms.PrintDialog()
        Me.MyPictureBox = New System.Windows.Forms.PictureBox()
        Me.Label1 = New System.Windows.Forms.Label()
        Me.DataGrid1 = New System.Windows.Forms.DataGrid()
        Me.MonthCalendar1 = New System.Windows.Forms.MonthCalendar()
        Me.Label2 = New System.Windows.Forms.Label()
        Me.Label3 = New System.Windows.Forms.Label()
        Me.MonthCalendar2 = New System.Windows.Forms.MonthCalendar()
        Me.LinkLabel1 = New System.Windows.Forms.LinkLabel()
        CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()
        '
        Me.MyPictureBox.Location = New System.Drawing.Point(296, 16)
        Me.MyPictureBox.Size = New System.Drawing.Size(16, 16)
        Me.MyPictureBox.Visible = False
        '
        Me.Label1.Font = New System.Drawing.Font("Tahoma", 8.25!, (System.Drawing.FontStyle.Bold Or System.Drawing.FontStyle.Underline), System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Label1.Location = New System.Drawing.Point(16, 16)
        Me.Label1.Size = New System.Drawing.Size(224, 23)
        Me.Label1.Text = "Report"
        '
        Me.DataGrid1.Font = New System.Drawing.Font("Tahoma", 8.0!)
        Me.DataGrid1.GridLineColor = System.Drawing.Color.RoyalBlue
        Me.DataGrid1.HeaderBackColor = System.Drawing.Color.MidnightBlue
        Me.DataGrid1.Location = New System.Drawing.Point(16, 48)
        Me.DataGrid1.Size = New System.Drawing.Size(392, 368)
        '
        Me.MonthCalendar1.Location = New System.Drawing.Point(432, 256)
        '
        Me.Label2.Font = New System.Drawing.Font("Tahoma", 8.25!, (System.Drawing.FontStyle.Bold Or System.Drawing.FontStyle.Underline), System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Label2.Location = New System.Drawing.Point(432, 224)
        Me.Label2.Size = New System.Drawing.Size(200, 23)
        Me.Label2.Text = "Report:"
        '
        Me.Label3.Font = New System.Drawing.Font("Tahoma", 8.25!, (System.Drawing.FontStyle.Bold Or System.Drawing.FontStyle.Underline), System.Drawing.GraphicsUnit.Point, CType(0, Byte))
        Me.Label3.Location = New System.Drawing.Point(432, 16)
        Me.Label3.Size = New System.Drawing.Size(200, 23)
        Me.Label3.Text = "Report:"
        '
        Me.MonthCalendar2.Location = New System.Drawing.Point(432, 48)
        '
        Me.LinkLabel1.Location = New System.Drawing.Point(368, 16)
        Me.LinkLabel1.Size = New System.Drawing.Size(32, 16)
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(648, 430)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.LinkLabel1, Me.Label3, Me.MonthCalendar2, Me.Label2, Me.MonthCalendar1, Me.DataGrid1, Me.Label1, Me.MyPictureBox})
        CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)

    End Sub
    Private Declare Auto Function BitBlt Lib "gdi32.dll" (ByVal hdcDest As IntPtr, ByVal _
        nXDest As Integer, ByVal nYDest As Integer, ByVal nWidth As Integer, ByVal nHeight _
        As Integer, ByVal hdcSrc As IntPtr, ByVal nXSrc As Integer, _
        ByVal nYSrc As Integer, ByVal dwRop As System.Int32) As Boolean
    Private bmpScreenshot As Bitmap
    Private Sub MyPrintDocument_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles MyPrintDocument.PrintPage
        Dim objImageToPrint As Graphics = e.Graphics
        objImageToPrint.DrawImage(bmpScreenshot, 0, 0)
        bmpScreenshot.Dispose()
        objImageToPrint.Dispose()
        e.HasMorePages = False
    End Sub

    Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
        LinkLabel1.Visible = False
        Dim objGraphics As Graphics = Me.CreateGraphics
        Dim objSize As Size = Me.Size
        Const SRCCOPY As Integer = &HCC0020

        bmpScreenshot = New Bitmap(objSize.Width, objSize.Height, objGraphics)
        Dim objGraphics2 As Graphics = objGraphics.FromImage(bmpScreenshot)
        Dim deviceContext1 As IntPtr = objGraphics.GetHdc
        Dim deviceContext2 As IntPtr = objGraphics2.GetHdc

        BitBlt(deviceContext2, 0, 0, Me.ClientRectangle.Width, _
            Me.ClientRectangle.Height, deviceContext1, 0, 0, SRCCOPY)
        objGraphics.ReleaseHdc(deviceContext1)
        objGraphics2.ReleaseHdc(deviceContext2)
        MyPrintDialog.Document = MyPrintDocument
        If MyPrintDialog.ShowDialog = DialogResult.OK Then
            MyPrintDocument.Print()
        End If
        LinkLabel1.Visible = True
    End Sub

End Class

   
    
  








Related examples in the same category

1.Screen Capture Demo