Click here to Skip to main content
11,576,060 members (59,014 online)
Rate this: bad
good
Please Sign up or sign in to vote.
See more: .NET3.5
How to draw a polygon using mouse then after calculate its area using asp.net.
Posted 2-Feb-13 4:49am
Comments
Sandeep Mewara at 2-Feb-13 12:02pm
   
1. You fail to share the language you are working on.
2. You fail to share what have you tried so far and where are you stuck?

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Ok, this isn't actually difficult, but you need to think about it, and do a few things.

If I assume you draw on a panel, then you need to set up a list of Point objects:
        private List<Point> polygon = null;
This will hold the polygon vertices as you create it.
You then need to handle the Panel.MouseClick event:
        private void myPolygonPanel_MouseClick(object sender, MouseEventArgs e)
            {
            if (polygon == null)
                {
                polygon = new List<Point>();
                }
            polygon.Add(e.Location);
            myPolygonPanel.Invalidate();
            }
And the Paint event:
        private void myPolygonPanel_Paint(object sender, PaintEventArgs e)
            {
            if (polygon != null && polygon.Count > 1)
                {
                for (int i = 0; i < polygon.Count - 1; i++)
                    {
                    e.Graphics.DrawLine(Pens.Red, polygon[i], polygon[i + 1]);
                    }
                }
            }
Calculating the area is another matter: this is a simple Brute-Force-and-Ignorance method converted from C++
        double GetArea(List<Point> polygon)
            {
            double area = 0.0;
            for (int i = 0; i < polygon.Count; i++)
                {
                int j = (i + 1) % polygon.Count;
                area += polygon[i].X * polygon[j].Y;
                area -= polygon[i].Y * polygon[j].X;
                }
            area /= 2;
            if (area < 0)
                {
                area = -area;
                }
            return area;
            }
You may want to be a little more intelligent! Wiki can probably help you.
  Permalink  

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

  Print Answers RSS
0 Sergey Alexandrovich Kryukov 295
1 F-ES Sitecore 140
2 OriginalGriff 125
3 Dave Kreskowiak 80
4 Abhinav S 78
0 OriginalGriff 705
1 Sergey Alexandrovich Kryukov 630
2 Abhinav S 438
3 F-ES Sitecore 410
4 Suvendu Shekhar Giri 365


Advertise | Privacy | Mobile
Web03 | 2.8.150603.1 | Last Updated 2 Feb 2013
Copyright © CodeProject, 1999-2015
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100