Public Class Form1 Private Sub Form1_Load() Handles Me.Load PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize End Sub Private Sub Button1_Click() Handles Button1.Click Using F As New OverlayForm() F.ShowDialog(Me) PictureBox1.Image = F.CaptureImage End Using End Sub Private Class OverlayForm Inherits Form Public CaptureImage As Image Private Dragging As Boolean? Private MousePos1, MousePos2 As Point Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs) MyBase.OnMouseDown(e) Dragging = True MousePos1 = MousePosition MousePos2 = MousePosition Invalidate() End Sub Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs) MyBase.OnMouseUp(e) MousePos2 = MousePosition Dragging = False Refresh() Dim DragArea As New Rectangle( _ Math.Min(MousePos1.X, MousePos2.X), _ Math.Min(MousePos1.Y, MousePos2.Y), _ Math.Abs(MousePos1.X - MousePos2.X), _ Math.Abs(MousePos1.Y - MousePos2.Y)) If DragArea.Width > 0 AndAlso DragArea.Height > 0 Then CaptureImage = New Bitmap(DragArea.Width, DragArea.Height) Using g = Graphics.FromImage(CaptureImage) g.CopyFromScreen(DragArea.Location, Point.Empty, _ DragArea.Size, CopyPixelOperation.SourceCopy) End Using End If Close() End Sub Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs) MyBase.OnMouseMove(e) If Dragging AndAlso MousePos2 <> MousePosition Then MousePos2 = MousePosition Invalidate() End If End Sub Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) MyBase.OnPaint(e) If If(Dragging, True) Then Dim p1 = PointToClient(MousePos1) Dim p2 = PointToClient(MousePos2) Dim area As New Rectangle( _ Math.Min(p1.X, p2.X), Math.Min(p1.Y, p2.Y), _ Math.Abs(p1.X - p2.X), Math.Abs(p1.Y - p2.Y)) ControlPaint.DrawFocusRectangle(e.Graphics, area) Using r As New Region() r.MakeInfinite() r.Xor(area) Using B As New SolidBrush(Color.FromArgb(127, Color.WhiteSmoke)) e.Graphics.FillRegion(B, r) End Using End Using End If End Sub Public Sub New() DoubleBuffered = True FormBorderStyle = System.Windows.Forms.FormBorderStyle.None Cursor = Cursors.Cross Dim q = Aggregate scr In Screen.AllScreens Into _ L = Min(scr.Bounds.Left), _ T = Min(scr.Bounds.Top), _ B = Max(scr.Bounds.Bottom), _ R = Max(scr.Bounds.Right) Dim area = Rectangle.FromLTRB(q.L, q.T, q.R, q.B) StartPosition = FormStartPosition.Manual Location = area.Location Size = area.Size TopMost = True Dim bmp As New Bitmap(area.Width, area.Height) Using g As Graphics = Graphics.FromImage(bmp) g.CopyFromScreen(area.Location, Point.Empty, area.Size) End Using BackgroundImage = bmp End Sub End Class End Class