private void button1_Click(object sender, EventArgs e) // кнпка cancel { if (points.Count > 0) { Point2D p = points.Last(); points.Remove(p); if (points.Count == 2) { selectedTriangle = null; if (triangulated != null) { triangulated.Clear(); } } else { if (points.Count > 2) { selectedTriangle = null; delaunay = new DelaunayTriangulation(points); triangulated = delaunay.Triangulate(); triangulatedWithCircles = delaunay.GetCircles(triangulated); Refresh(); } } } Refresh(); }
public void DrawLines(List <Triangle> Triangles, Graphics g) { foreach (Triangle t in Triangles) { g.DrawLine(Pens.Black, t.a.x, t.a.y, t.b.x, t.b.y); g.DrawLine(Pens.Black, t.b.x, t.b.y, t.c.x, t.c.y); g.DrawLine(Pens.Black, t.c.x, t.c.y, t.a.x, t.a.y); if (selectedTriangle == t) { Circle c = delaunay.GetCircles(new List <Triangle>() { selectedTriangle })[t]; float x = c.center.x - c.radius; float y = c.center.y - c.radius; g.DrawEllipse(Pens.LightGray, x, y, 2 * c.radius, 2 * c.radius); } if (selectedTriangle != null) { continue; } { if (triangulatedWithCircles.ContainsKey(t)) { Circle c = triangulatedWithCircles[t]; float x = c.center.x - c.radius; float y = c.center.y - c.radius; g.DrawEllipse(Pens.LightGray, x, y, 2 * c.radius, 2 * c.radius); } } } }
private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { released = true; if (points.Count > 2) { selectedTriangle = null; delaunay = new DelaunayTriangulation(points); triangulated = delaunay.Triangulate(); triangulatedWithCircles = delaunay.GetCircles(triangulated); Refresh(); } Refresh(); } }