Click here to Skip to main content
11,482,402 members (76,139 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 5: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)



Advertise | Privacy | Mobile
Web04 | 2.8.150520.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