//点击左键 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; }
//构造函数用于给以上声明的两个列表初始化 public Construction_TIN(PointList points) { this.pointlist = points; this.triangles = new TriangleList(); }
private void button1_Click(object sender, EventArgs e) { points = new PointList(); triangles = null; this.panel.BackgroundImage = null; }