コード例 #1
0
        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();
        }
コード例 #2
0
        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);
                    }
                }
            }
        }
コード例 #3
0
        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();
            }
        }