【发布时间】:2014-01-17 05:11:45
【问题描述】:
该方法获取两个点并返回一个包含 30 个点的列表。 当我在绘画事件中显示点时,我看到一大圈点。 我想将这些点显示为不是圆形,而是像...... . . .像这样
我在课堂上排名第一:
point1 = new Point(80, 80);
point2 = new Point(280, 300);
extendedPoints = ExtendPoints(point1, point2);
一开始我是这样做的:
private static List<PointF> ExtendPoints(PointF pt1, PointF pt4)
{
extendedPoints.Add(pt1);
float x = (Math.Max(pt1.X, pt4.X) - Math.Min(pt1.X, pt4.X)) / 2 + Math.Min(pt1.X, pt4.X);
float y = (Math.Max(pt1.Y, pt4.Y) - Math.Min(pt1.Y, pt4.Y)) / 2 + Math.Min(pt1.Y, pt4.Y);
var pt2 = new PointF(x, y);
extendedPoints.Add(pt2);
extendedPoints.Add(pt4);
return extendedPoints;
}
结果是我给出两个点并获得一个包含 3 个点的列表我在两个给定点之间的距离中间创建一个新点:
你可以看到左边的pictureBox图像上有3个红点。 我在另外两个给定点的正中间创建了一个新点。
在这种情况下,在我所做的类的顶部:
point1 = new Point(80, 80);
point2 = new Point(280, 300);
extendedPoints = ExtendPoints(point1, point2);
我给出两点并获得三点列表并显示三点。 现在我需要做更多的两件事:
在方法内部,我首先需要添加另一个点,这样列表将返回四个点,所有点之间的距离相等。 我需要以某种方式为新的第二点添加另一个数学计算。
我试着这样做:
extendedPoints.Add(pt1);
float x = (Math.Max(pt1.X, pt4.X) - Math.Min(pt1.X, pt4.X)) / 3 + Math.Min(pt1.X, pt4.X);
float y = (Math.Max(pt1.Y, pt4.Y) - Math.Min(pt1.Y, pt4.Y)) / 3 + Math.Min(pt1.Y, pt4.Y);
var pt2 = new PointF(x, y);
float a = (Math.Max(pt1.X, pt4.X) - Math.Min(pt1.X, pt4.X)) / 2 / 3 + Math.Min(pt1.X, pt4.X);
float b = (Math.Max(pt1.Y, pt4.Y) - Math.Min(pt1.Y, pt4.Y)) / 2 / 3 + Math.Min(pt1.Y, pt4.Y);
var pt3 = new PointF(a, b);
extendedPoints.Add(pt2);
extendedPoints.Add(pt3);
extendedPoints.Add(pt4);
我得到了四个点,但最后一个点的距离不相等:
然后我需要使用 FOR LOOP 例如:
for (int i = 0; i < 100; i++)
它将在两个给定点之间创建 100 个等距的点!
所以我不知道如何做获得 4 个相等距离点的部分以及如何做 for 循环?我现在需要按照我的代码。
【问题讨论】:
-
如果您希望所有点都出现在一行中,那么只需给它们都提供相同的 Y 变量。
-
Steven 好的,我只更改了这一行:PointF circlePoint = new PointF((float)x, 100);//(float)y);为测试 100 添加。但现在我看到了一条线上的点,但点之间的距离不等于当它是圆形时。
-
也许您需要更好地解释一下您到底想要实现什么。你能否用两张图片展示你得到了什么以及你想得到什么?
-
Steven 好的,我正在更新我的问题。
-
更新了我的问题,图像很小,我不知道为什么。也许你可以拯救他们看看红点和我的意思。