//protected override void OnPaint(PaintEventArgs e)
        //{
        //    Graphics graphics = PolygonPanel.CreateGraphics();
        //    Brush blackpen = new SolidBrush(Color.Black);
        //    Pen pen = new Pen(blackpen, 1);
        //    Point[] point = new Point[6];
        //    point[0] = polygon.PointOne;
        //    point[1] = polygon.PointTwo;
        //    point[2] = polygon.PointThree;
        //    point[3] = polygon.PointFour;
        //    point[4] = polygon.PointFive;
        //    point[5] = polygon.PointSix;

        //    graphics.DrawPolygon(pen,point);
        //    //base.OnPaint(e);
        //}
        protected override void OnPaint(PaintEventArgs e)
        {
            System.Drawing.Graphics graphics = PolygonPanel.CreateGraphics();
            Brush blackpen = new SolidBrush(Color.Black);
            Pen   pen      = new Pen(blackpen, 1);

            Point[] point = new Point[6];
            int     cx = (int)circle.CentreX, cy = (int)circle.CentreX;
            int     R = (int)circle.Radius, N = 6;

            for (int i = 0; i < 6; i++)
            {
                point[i].X = (int)(cx + R * Math.Cos(Math.PI / N * (1 + 2 * i)));
                point[i].Y = (int)(cy + R * Math.Sin(Math.PI / N * (1 + 2 * i)));
            }
            graphics.DrawPolygon(pen, point);
            //int cx = 550, cy = 550;
            //int R = 100, N = 6;
            //int[,] points = new int[6, 2];
            //for (int i = 0; i < 6; i++)
            //{

            //    points[i, 0] = (int)(cx + R * Math.Cos(Math.PI / N * (1 + 2 * i)));
            //    points[i, 1] = (int)(cy + R * Math.Sin(Math.PI / N * (1 + 2 * i)));

            //    //po
            //    //graphics.
            //    //base.OnPaint(e);
            //}
        }
Esempio n. 2
0
 private void ClearButton_Click(object sender, EventArgs e)
 {
     PolygonPanel.Invalidate();
     _points          = new List <PointF>();
     _polygonTops     = new List <Vertex>();
     Coordinates.Text = string.Empty;
 }
Esempio n. 3
0
        private void TriangulateButton_Click(object sender, EventArgs e)
        {
            Graphics g            = PolygonPanel.CreateGraphics();
            var      polygon      = new Polygon(_polygonTops);
            var      triangulator = new Triangulator(polygon);

            polygon = triangulator.Triangulate();
            int i = 0;

            foreach (var triangle in polygon.Triangles)
            {
                int j      = 0;
                var points = new PointF[3];
                foreach (Vertex top in triangle.Tops)
                {
                    points[j] = new PointF((float)top.X, (float)top.Y);
                    j++;
                }
                g.DrawPolygon(new Pen(new SolidBrush(Color.Black), 2), points);
                g.FillPolygon(new SolidBrush(_colorsForTriangles[i]), points);
                i++;
                i = i % 3 == 0 ? 0 : i;
                foreach (var point in points)
                {
                    g.FillEllipse(new SolidBrush(Color.Yellow), point.X - 3, point.Y - 3, 6, 6);
                }
                //var triangleCentroid = triangle.GetCentroidForTops();
                //g.FillEllipse(new SolidBrush(Color.Black), (float)triangleCentroid.X - 3, (float)triangleCentroid.Y - 3, 6, 6);
            }
            // _polygonTops = new List<Vertex>();
        }
Esempio n. 4
0
        private void PolygonPanel_MouseDown(object sender, MouseEventArgs e)
        {
            var      point = new Point(e.X, e.Y);
            var      color = new SolidBrush(Color.Red);
            Graphics g     = PolygonPanel.CreateGraphics();

            g.FillEllipse(color, point.X - 2.5f, point.Y - 2.5f, 5, 5);
            _polygonTops.Add(new Vertex(point.X, point.Y));
            Coordinates.Text += $"X: {e.X}, Y:{e.Y}\n";
            if (_points.Count > 0)
            {
                g.DrawLine(new Pen(new SolidBrush(Color.Black)), point, _points.Last());
            }
            _points.Add(e.Location);
            if (_points.Count >= 2)
            {
                TriangulateButton.Enabled = true;
            }
        }
Esempio n. 5
0
        private void TriangulateButton_Click(object sender, EventArgs e)
        {
            Graphics g            = PolygonPanel.CreateGraphics();
            var      polygon      = new Polygon(_polygonTops);
            var      triangulator = new Triangulator(polygon);

            polygon = triangulator.Triangulate();
            int i = 0;

            foreach (var triangle in polygon.Triangles)
            {
                int j      = 0;
                var points = new PointF[3];
                foreach (Vertex top in triangle.Tops)
                {
                    points[j] = new PointF((float)top.X, (float)top.Y);
                    j++;
                }
                g.DrawPolygon(new Pen(new SolidBrush(Color.Black), 2), points);
                g.FillPolygon(new SolidBrush(_colorsForTriangles[i]), points);
                i++;
                i = i % 3 == 0 ? 0 : i;
                foreach (var point in points)
                {
                    g.FillEllipse(new SolidBrush(Color.Yellow), point.X - 3, point.Y - 3, 6, 6);
                }
                var triangleCentroid = triangle.GetCentroidForTops();
                g.FillEllipse(new SolidBrush(Color.Black), (float)triangleCentroid.X - 3, (float)triangleCentroid.Y - 3, 6, 6);
            }
            var centrForFrame = polygon.GetCentroidForFrame();
            var centrForBody  = polygon.GetCentroidForBody();
            var centrForTops  = polygon.GetCentroidForTops();

            g.FillEllipse(new SolidBrush(Color.YellowGreen), (float)centrForTops.X - 7, (float)centrForTops.Y - 7, 14, 14);
            g.FillEllipse(new SolidBrush(Color.Black), (float)centrForBody.X - 6, (float)centrForBody.Y - 6, 12, 12);
            g.FillEllipse(new SolidBrush(Color.Violet), (float)centrForFrame.X - 5, (float)centrForFrame.Y - 5, 10, 10);
            _polygonTops = new List <Vertex>();
        }