Esempio n. 1
0
        //点击左键
        private void panel_MouseDown(object sender, MouseEventArgs e)
        {
            //GDI+定义画图对象
            Image    map = new Bitmap(panel.Width, panel.Height);
            Graphics g   = Graphics.FromImage(map);
            //画线对象
            Pen linePen = new Pen(Color.Black, 2);
            //画点对象
            Pen pointPen = new Pen(Color.Red, 2);

            //实例化点对象
            Point newPoint = new Point(e.X, e.Y);

            //将点对象加入点列表中
            points.pointList.Add(newPoint);



            //当点数大于三时,实例化对象并调构造函数,存入点,创建三角形
            if (points.pointList.Count > 2)
            {
                Construction_TIN delaunay = new Construction_TIN(this.points);
                //此时triangles不再是null
                triangles = delaunay.Triangle_const();
            }

            //遍历点列表,画点
            for (int j = 0; j < points.Count; j++)
            {
                g.DrawEllipse(pointPen, points[j].X, points[j].Y, 2f, 2f);
            }

            //如果三角形列表不为空,画出三角形的边
            if (triangles != null)
            {
                for (int i = 0; i < triangles.Count; i++)
                {
                    Triangle triangle = triangles[i];
                    g.DrawLine(linePen, triangle.Edge1.pa.X, triangle.Edge1.pa.Y, triangle.Edge1.pb.X, triangle.Edge1.pb.Y);
                    g.DrawLine(linePen, triangle.Edge2.pa.X, triangle.Edge2.pa.Y, triangle.Edge2.pb.X, triangle.Edge2.pb.Y);
                    g.DrawLine(linePen, triangle.Edge3.pa.X, triangle.Edge3.pa.Y, triangle.Edge3.pb.X, triangle.Edge3.pb.Y);
                }
            }

            //返回给面板,重绘面板,用于显示
            this.panel.BackgroundImage = map;
        }
Esempio n. 2
0
 //构造函数用于给以上声明的两个列表初始化
 public Construction_TIN(PointList points)
 {
     this.pointlist = points;
     this.triangles = new TriangleList();
 }
Esempio n. 3
0
 private void button1_Click(object sender, EventArgs e)
 {
     points    = new PointList();
     triangles = null;
     this.panel.BackgroundImage = null;
 }