任意点击N边形,显示该N边形,并计算出面积

来源:互联网 发布:家装diy设计软件 编辑:程序博客网 时间:2024/06/06 01:21
功能描述:包括两部分:(1)用户连续点击多个点,形成一个多边形;(2)计算此多边形的面积。
任意点击N边形,显示该N边形,并计算出面积 - 行也思君 - 行也思君
 

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace Drawgoly{    public partial class Frm_Main : Form    {        List<Point> mylist=new List<Point>();        double Area = 0;//面积        public Frm_Main()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {            if (mylist.Count < 3)                textBox1.Text = "Error";//当边数小于3时,输出错误提示            else            {                Area = mylist[0].Y * (mylist[mylist.Count-1].X - mylist[1].X);                for (int i = 1; i < mylist.Count; i++)                {                    Area += mylist[i].Y * (mylist[i - 1].X - mylist[(i + 1) % mylist.Count].X);                }                Area = Math.Abs(Area)*0.5;//求多边形的面积                Button btn = (Button)sender;                string str1 = Area.ToString();//转化为string并保留2位小数                textBox1.Text = str1;//在文本框上显示面积            }                    }        private void Frm_Main_MouseClick(object sender, MouseEventArgs e)        {            Graphics ghs = this.CreateGraphics();//画布            Pen mypen = new Pen(Color.Red, 3);//画笔            if (e.Button == MouseButtons.Left)            {                mylist.Add(e.Location) ;//取鼠标的坐标                ghs.FillEllipse(Brushes.Blue, e.Location.X, e.Location.Y, 3,3);//画点            }            if (e.Button == MouseButtons.Right)            {                ghs.DrawPolygon(mypen, mylist.ToArray());//画多边形            }            mypen.Dispose();//摧毁画笔以及画布            ghs.Dispose();        }        private void button2_Click(object sender, EventArgs e)//重绘按钮        {            Graphics gh = this.CreateGraphics();            Pen pen1 = new Pen(Color.White, 3);            for (int j = 0; j < mylist.Count; j++)            {                gh.FillEllipse(Brushes.White, mylist[j].X, mylist[j].Y, 3, 3);//画点            }            gh.DrawPolygon(pen1, mylist.ToArray());            textBox1.Text = null;            mylist.Clear();        }        }}


推荐学习C#的网站:http://msdn.microsoft.com/library/system.drawing.graphics_methods.aspx
原创粉丝点击