Click here to Skip to main content
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)

  Print Answers RSS
0 OriginalGriff 330
1 Sergey Alexandrovich Kryukov 279
2 BillWoodruff 245
3 Afzaal Ahmad Zeeshan 215
4 CPallini 205
0 OriginalGriff 5,635
1 DamithSL 4,496
2 Maciej Los 3,942
3 Kornfeld Eliyahu Peter 3,480
4 Sergey Alexandrovich Kryukov 3,180


Advertise | Privacy | Mobile
Web01 | 2.8.141216.1 | Last Updated 2 Feb 2013
Copyright © CodeProject, 1999-2014
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