Click here to Skip to main content
15,896,606 members
Articles / Programming Languages / Visual Basic

Screen Shot Application

Rate me:
Please Sign up or sign in to vote.
3.74/5 (69 votes)
24 Sep 2010CPOL5 min read 303.6K   18.6K   210  
Screen Shot is a simple application that allows a user to quickly capture images from the screen and save them in a user predefined folder.
Imports ScreenCaptureLib

Public Class ToolBarForm

    Dim rectangleFrm As RectangleForm
    Private DeskHwnd, hdc As Integer
    Private hdcMem As Integer
    Private hBitmap As Integer

    Private Sub UpOutButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UpOutButton.Click
        Me.rectangleFrm.Height += 1
        Me.rectangleFrm.Top -= 1
    End Sub

    Private Sub DownOutButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DownOutButton.Click
        Me.rectangleFrm.Height += 1
    End Sub

    Private Sub LeftOutButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LeftOutButton.Click
        Me.rectangleFrm.Width += 1
        Me.rectangleFrm.Left -= 1
    End Sub

    Private Sub RightOutButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RightOutButton.Click
        Me.rectangleFrm.Width += 1
    End Sub

    Private Sub UpInButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UpInButton.Click
        If Me.rectangleFrm.MinimumSize.Height < Me.rectangleFrm.Height Then
            Me.rectangleFrm.Top += 1
            Me.rectangleFrm.Height -= 1
        End If
    End Sub

    Private Sub LeftInButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LeftInButton.Click
        If Me.rectangleFrm.MinimumSize.Width < Me.rectangleFrm.Width Then
            Me.rectangleFrm.Width -= 1
            Me.rectangleFrm.Left += 1
        End If
    End Sub

    Private Sub RightInButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RightInButton.Click
        If Me.rectangleFrm.MinimumSize.Width < Me.rectangleFrm.Width Then
            Me.rectangleFrm.Width -= 1
        End If
    End Sub

    Private Sub DownInButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DownInButton.Click
        If Me.rectangleFrm.MinimumSize.Height < Me.rectangleFrm.Height Then
            Me.rectangleFrm.Height -= 1
        End If
    End Sub

    Private Sub CaptureRectangleTSB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CaptureRectangleTSB.Click
        Dim imageRect As New Rectangle
        imageRect = Me.rectangleFrm.rectanglePanel.RectangleToScreen(New Rectangle(6, 6, _
        Me.rectangleFrm.rectanglePanel.Width - 12, Me.rectangleFrm.rectanglePanel.Height - 12))
        Select Case My.Settings.PenWidth
            Case 1
                imageRect.X += 1
                imageRect.Y += 1
                imageRect.Width -= 1
                imageRect.Height -= 1
            Case 2
                imageRect.X += 1
                imageRect.Y += 1
                imageRect.Width -= 2
                imageRect.Height -= 2
            Case 3
                imageRect.X += 2
                imageRect.Y += 2
                imageRect.Width -= 3
                imageRect.Height -= 3
        End Select
        Dim img As Image
        Try
            My.Forms.MenuForm.NotifyIcon1.Icon = My.Resources.Capture
            img = ICapture.ScreenRectangle(imageRect)
            My.Forms.MenuForm.SaveImage(img)
            If My.Settings.PlaySound Then
                My.Forms.MenuForm.Sound.Play()
            End If
        Catch ex As Exception
            My.Forms.MenuForm.globalMouse.RemoveHook()
            MessageBox.Show("The capture of the image failed!" & Environment.NewLine _
            & "Restarting the application from the shortcut may fix the problem." _
            & Environment.NewLine & Environment.NewLine & ex.Message, _
            "Capture Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            My.Forms.MenuForm.NotifyIcon1.Icon = My.Resources.Screen
        End Try
    End Sub

    Private Sub Panel3_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel3.MouseEnter
        Me.Focus()
    End Sub

    Private Sub Panel3_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel3.Paint
        '==========horizontal=========
        e.Graphics.DrawLine(Pens.Black, 5, 98, 85, 98)
        e.Graphics.DrawLine(Pens.Black, 5, 98, 9, 96)
        e.Graphics.DrawLine(Pens.Black, 5, 98, 9, 100)
        e.Graphics.DrawLine(Pens.Black, 84, 98, 81, 96)
        e.Graphics.DrawLine(Pens.Black, 84, 98, 81, 100)
        '==========vertical===========
        e.Graphics.DrawLine(Pens.Black, 98, 5, 98, 85)
        e.Graphics.DrawLine(Pens.Black, 98, 5, 96, 9)
        e.Graphics.DrawLine(Pens.Black, 98, 5, 100, 9)
        e.Graphics.DrawLine(Pens.Black, 98, 84, 96, 81)
        e.Graphics.DrawLine(Pens.Black, 98, 84, 100, 81)
    End Sub

    Private Sub wLabel_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles wLabel.SizeChanged
        Me.wLabel.Left = 46 - CInt(Me.wLabel.Size.Width / 2)
    End Sub

    Private Sub ToolStrip1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStrip1.MouseEnter
        Me.Focus()
    End Sub

    Private Sub Form3_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        My.Settings.Save()
    End Sub

    Private Sub ToolBarForm_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If e.CloseReason = CloseReason.UserClosing Then
            e.Cancel = True
            Me.rectangleFrm.Close()
        End If
    End Sub

    Private Sub GoToImageFolderTSB_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
        Me.rectangleFrm = CType(Me.Owner, RectangleForm)
        Me.PenWidthTSDDB.Text = My.Settings.PenWidth & " pt"
        Me.PenWidthTSDDB.ToolTipText = "Line Width (" & Me.PenWidthTSDDB.Text & ")"
    End Sub

    Private Sub GoToImageFolderTSB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GoToImageFolderTSB.Click
        My.Forms.MenuForm.GoToTheFolder()
        Me.rectangleFrm.Close()
    End Sub

    Private Sub SolidToolStripMenuItem_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles SolidToolStripMenuItem.Paint
        Dim p1 As New Pen(Color.Black, 1)
        p1.DashStyle = Drawing2D.DashStyle.Solid
        e.Graphics.DrawLine(p1, 5, CInt(Me.SolidToolStripMenuItem.Height / 2), 20, CInt(Me.SolidToolStripMenuItem.Height / 2))
        p1.Dispose()
    End Sub

    Private Sub DotToolStripMenuItem_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles DotToolStripMenuItem.Paint
        Dim p1 As New Pen(Color.Black, 2)
        p1.DashStyle = Drawing2D.DashStyle.Dot
        e.Graphics.DrawLine(p1, 5, CInt(Me.DotToolStripMenuItem.Height / 2), 20, CInt(Me.DotToolStripMenuItem.Height / 2))
        p1.Dispose()
    End Sub

    Private Sub DashToolStripMenuItem_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles DashToolStripMenuItem.Paint
        Dim p1 As New Pen(Color.Black, 2)
        p1.DashStyle = Drawing2D.DashStyle.Dash
        e.Graphics.DrawLine(p1, 5, CInt(Me.DashToolStripMenuItem.Height / 2), 20, CInt(Me.DashToolStripMenuItem.Height / 2))
        p1.Dispose()
    End Sub

    Private Sub PenStyleTSDDB_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PenStyleTSDDB.Paint
        Dim p1 As New Pen(Color.Black, 2)
        p1.DashStyle = My.Settings.DashStyle
        e.Graphics.DrawLine(p1, 5, CInt(Me.PenStyleTSDDB.Height / 2), 20, CInt(Me.PenStyleTSDDB.Height / 2))
        p1.Dispose()
        Me.PenStyleTSDDB.ToolTipText = "Line Style (" & My.Settings.DashStyle.ToString & ")"
    End Sub

    Private Sub DashToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DashToolStripMenuItem.Click
        My.Settings.DashStyle = Drawing2D.DashStyle.Dash
        Me.PenStyleTSDDB.Enabled = False
        Me.PenStyleTSDDB.Enabled = True
        Me.rectangleFrm.rectanglePanel.Refresh()
    End Sub

    Private Sub DotToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DotToolStripMenuItem.Click
        My.Settings.DashStyle = Drawing2D.DashStyle.Dot
        Me.PenStyleTSDDB.Enabled = False
        Me.PenStyleTSDDB.Enabled = True
        Me.rectangleFrm.rectanglePanel.Refresh()
    End Sub

    Private Sub SolidToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SolidToolStripMenuItem.Click
        My.Settings.DashStyle = Drawing2D.DashStyle.Solid
        Me.PenStyleTSDDB.Enabled = False
        Me.PenStyleTSDDB.Enabled = True
        Me.rectangleFrm.rectanglePanel.Refresh()
    End Sub

    Private Sub PenColorTSB_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PenColorTSB.Click
        If Me.ColorDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
            My.Settings.PenColor = Me.ColorDialog1.Color
            Me.rectangleFrm.rectanglePanel.Refresh()
        End If
    End Sub

    Private Sub PenColorTSB_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PenColorTSB.Paint
        Dim br1 As New SolidBrush(My.Settings.PenColor)
        e.Graphics.FillRectangle(br1, 5, 5, CInt(Me.PenColorTSB.Width - 10), CInt(Me.PenColorTSB.Height - 10))
        br1.Dispose()
        Me.PenColorTSB.ToolTipText = "Line Color (" & My.Settings.PenColor.Name & ")"
    End Sub

    Private Sub Pt1ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Pt1ToolStripMenuItem.Click
        My.Settings.PenWidth = 1
        Me.PenWidthTSDDB.Text = 1 & " pt"
        Me.PenWidthTSDDB.ToolTipText = "Line Width (" & Me.PenWidthTSDDB.Text & ")"
        Me.rectangleFrm.rectanglePanel.Refresh()
    End Sub

    Private Sub Pt2ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Pt2ToolStripMenuItem.Click
        My.Settings.PenWidth = 2
        Me.PenWidthTSDDB.Text = 2 & " pt"
        Me.PenWidthTSDDB.ToolTipText = "Line Width (" & Me.PenWidthTSDDB.Text & ")"
        Me.rectangleFrm.rectanglePanel.Refresh()
    End Sub

    Private Sub Pt3ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Pt3ToolStripMenuItem.Click
        My.Settings.PenWidth = 3
        Me.PenWidthTSDDB.Text = 3 & " pt"
        Me.PenWidthTSDDB.ToolTipText = "Line Width (" & Me.PenWidthTSDDB.Text & ")"
        Me.rectangleFrm.rectanglePanel.Refresh()
    End Sub
End Class

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) ZipEdTech
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions