C# 如何找到两点之间的中点坐标?

C# 如何找到两点之间的中点坐标?,c#,winforms,C#,Winforms,我有这个方法: private static List<PointF> ExtendPoints(PointF pt1, PointF pt3) { float x = (Math.Max(pt1.X, pt3.X) - Math.Min(pt1.X, pt3.X)) / 2 + Math.Min(pt1.X, pt3.X); float y = (Math.Max(pt1.Y, pt3.Y) - Math.Min(pt

我有这个方法:

private static List<PointF> ExtendPoints(PointF pt1, PointF pt3)
        {
            float x = (Math.Max(pt1.X, pt3.X) - Math.Min(pt1.X, pt3.X)) / 2 + Math.Min(pt1.X, pt3.X);
            float y = (Math.Max(pt1.Y, pt3.Y) - Math.Min(pt1.Y, pt3.Y)) / 2 + Math.Min(pt1.Y, pt3.Y);
            var pt2 = new PointF(x, y);
            extendedPoints.Add(pt1);
            extendedPoints.Add(pt2);
            extendedPoints.Add(pt3);
            return extendedPoints;
        }
然后在绘制事件中,我想显示返回的点列表:

foreach (PointF pt in extendedPoints)
            {
                e.FillEllipse(Brushes.Red, pt.X, pt.Y, 4f, 4f);
            }
但我只看到3点,而不是4点


那么bug在哪里呢?计算方法中存在错误?

是的,将每个轴上行驶的距离除以1/3和2/3,将得到两个端点之间直线上的中间点。基本几何学。

keshlam,所以我保留我现在用2除以的两个x和y。并添加两个新变量X,例如a和b,这次将其除以3?如果要将直线分成三个相等的线段,请忽略或放弃1/2结果,而是将一个点除以1/3,将另一个点除以2/3。
point1 = new Point(80, 80);
point2 = new Point(280, 300);
extendedPoints = ExtendPoints(point1, point2);
foreach (PointF pt in extendedPoints)
            {
                e.FillEllipse(Brushes.Red, pt.X, pt.Y, 4f, 4f);
            }