在windows窗体中实现多边形,c#,visual studio 2019

在windows窗体中实现多边形,c#,visual studio 2019,c#,winforms,polygon,C#,Winforms,Polygon,我想在windows窗体中的矩形内创建多边形: 这适用于矩形:(位置和尺寸是预定义的点) 这段代码使用选定的颜色在矩形内绘制一个矩形 我想做同样的事情,但画一个多边形,而不是用预定义的矩形位置和尺寸,所以多边形应该在“不可见”的矩形内 问题: 我怎样才能计算出他所有的分数 编辑:例如,我想在矩形内部绘制一个梯形您好您可以使用矩形的位置在矩形中定义多边形。这里有一个到的内联链接 有关绘制多边形的详细信息。 对于你的问题,可能有无限的可能性,因此,如果你没有一个具体的解决方案,你很难告诉你一个解决

我想在windows窗体中的矩形内创建多边形:

这适用于矩形:(位置和尺寸是预定义的点)

这段代码使用选定的颜色在矩形内绘制一个矩形

我想做同样的事情,但画一个多边形,而不是用预定义的矩形位置和尺寸,所以多边形应该在“不可见”的矩形内

问题: 我怎样才能计算出他所有的分数



编辑:例如,我想在矩形内部绘制一个梯形

您好
您可以使用矩形的位置在矩形中定义多边形。这里有一个到的内联链接
有关绘制多边形的详细信息。
对于你的问题,可能有无限的可能性,因此,如果你没有一个具体的解决方案,你很难告诉你一个解决方案。。

       private void Draw(PaintEventArgs e)
        {
            //Position of the rectangle
            var recPosition = (100, 100);

            // Draw of the rectangle
            Pen blackPen = new Pen(Color.Black, 3);
            SolidBrush blueBrush = new SolidBrush(Color.Blue);
            RectangleF rect = new RectangleF(0.0F, 0.0F, 200.0F, 200.0F);
            e.Graphics.FillRectangle(blueBrush, rect);

            // Create points that define polygon.
            PointF point1 = new PointF(0, RecPosition.Item2);
            PointF point2 = new PointF(RecPosition.Item1/2, RecPosition.Item2*2);
            PointF point3 = new PointF(RecPosition.Item1*2, RecPosition.Item2/2);
            PointF point4 = new PointF(RecPosition.Item2, 0);
            PointF[] curvePoints =
                     {
                 point1,
                 point2,
                 point3,
                 point4,
             };

            // Draw polygon curve to screen.
            e.Graphics.DrawPolygon(blackPen, curvePoints);
        }

            // Draw polygon curve to screen.
            e.Graphics.DrawPolygon(blackPen, curvePoints);
        }

你已经做到了-矩形是多边形。除非你告诉我们更多,考虑到边界内可以容纳的边和顶点的数量,可能还有无限多的其他多边形。矩形是多边形,所以你已经有了一个不超出矩形的多边形。您是否想要一个特定的不同多边形,例如具有指定边数和最大大小的正多边形(不离开边界框,这就是我们所说的定义了这样一个限制的矩形)?一个相对简单的方法是:创建一个具有您想要的形状、任意位置和大小的多边形。找到它的边界框。计算将多边形的边界框映射到约束矩形的变换矩阵。应用矩阵变换所有多边形点,以形成一个新的多边形,经过平移和缩放,适合矩形。是的,确切地说,我想在矩形内绘制一个梯形。如果你想在边界矩形内绘制一个梯形,你仍然必须定义其顶点。你有什么问题?非常感谢!
       private void Draw(PaintEventArgs e)
        {
            //Position of the rectangle
            var recPosition = (100, 100);

            // Draw of the rectangle
            Pen blackPen = new Pen(Color.Black, 3);
            SolidBrush blueBrush = new SolidBrush(Color.Blue);
            RectangleF rect = new RectangleF(0.0F, 0.0F, 200.0F, 200.0F);
            e.Graphics.FillRectangle(blueBrush, rect);

            // Create points that define polygon.
            PointF point1 = new PointF(0, RecPosition.Item2);
            PointF point2 = new PointF(RecPosition.Item1/2, RecPosition.Item2*2);
            PointF point3 = new PointF(RecPosition.Item1*2, RecPosition.Item2/2);
            PointF point4 = new PointF(RecPosition.Item2, 0);
            PointF[] curvePoints =
                     {
                 point1,
                 point2,
                 point3,
                 point4,
             };

            // Draw polygon curve to screen.
            e.Graphics.DrawPolygon(blackPen, curvePoints);
        }

            // Draw polygon curve to screen.
            e.Graphics.DrawPolygon(blackPen, curvePoints);
        }