In last two articles we have discussed about how to load an image in our windows form and how to re size that image see this:

Part1: Open an image

Part2: Resizing image

Now we will discuss that how we can crop an image

Design form like this view:

Image-Editing-in-VB.Net.jpg

In crop tab there are one two button one is 'Make selection' and other for 'Ok'.

For cropping an image we will need to define region that is need to crop,in this article we will use rectangle for defining such area or region

When we click on 'MakeSelection' button and after that draw a rectangle on picturebox with the help of mouse.

Code for draw rectangle:

Declare some private variables for finding cursor location and define drawing objects

Dim cropX As Integer

Dim cropY As Integer

Dim cropWidth As Integer

Dim cropHeight As Integer

Dim oCropX As Integer

Dim oCropY As Integer

Dim cropBitmap As Bitmap

Public cropPen As Pen

Public cropDashStyle As Drawing2D.DashStyle = Drawing2D.DashStyle.DashDot

We will use mousedown And mouse move event for doing this. we will need to implement this code on mouse down event:

If e.Button = Windows.Forms.MouseButtons.Left Then

Cursor = Cursors.Cross

cropX = e.X

cropY = e.Y

cropPen = New Pen(color.Black, 1)

cropPen.DashStyle = DashStyle.DashDotDot

End If

PictureBox1.Refresh()

In above code there are two variables are using one is cropX for x position of the rectangle location and another is cropY for y position. cropPen is the object of pen class with pensize and pencolor.

And write this code on mouse move event

If PictureBox1.Image Is Nothing Then Exit Sub

If e.Button = Windows.Forms.MouseButtons.Left Then

PictureBox1.Refresh()

cropWidth = e.X - cropX

cropHeight = e.Y - cropY

PictureBox1.CreateGraphics.DrawRectangle(cropPen, cropX, cropY, cropWidth, cropHeight)

End If

On mouse event we can find cursor position with the help of event arg e so we can easily determine rectangle's width and height. and use drawrectangle method. On above code cropPen determines the color, size and other styles of rectangle,cropx is x coordinate of upperleft corner of rectangle, y is y coordinate of upperleft corner of rectangle and cropWidth,cropHeight are width and height of rectangle respectively.

Image-Editing-tool-in-VB.Net.jpg

Code for crop:

Image-Editing-tool-in-.Net.jpg

Dim
rect As Rectangle = New Rectangle(cropX, cropY, cropWidth, cropHeight)

'First we define a rectangle with the help of already calculated points

Dim OriginalImage As Bitmap = New Bitmap(PictureBox1.Image, PictureBox1.Width, PictureBox1.Height)

'Original image

Dim _img As New Bitmap(cropWidth, cropHeight) ' for cropinf image

Dim g As Graphics = Graphics.FromImage(_img) ' create graphics

g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic

g.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality

g.CompositingQuality = Drawing2D.CompositingQuality.HighQuality

'set image attributes

g.DrawImage(OriginalImage, 0, 0, rect, GraphicsUnit.Pixel)

PictureBox1.Image = _img

In above code I have mentioned commit you can use this for better understanding.

So I think now we can cropping any image easily with the help of this scenario.

Thanks.