Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从x1,y1到x2,y2的循环,无论它们的顺序如何_C# - Fatal编程技术网

C# 从x1,y1到x2,y2的循环,无论它们的顺序如何

C# 从x1,y1到x2,y2的循环,无论它们的顺序如何,c#,C#,我希望能够通过两点(p1,p2)选择图像的一部分。我的问题是,我想使用相同的循环,不管它们的顺序如何 现在我有这个: for (int x = p1.X; x != p2.X; x += Math.Sign(p2.X - p1.X)) { for (int y = p1.Y; y != p2.Y; y += Math.Sign(p2.Y - p1.Y)) { MessageBox.Show(Strin

我希望能够通过两点(p1,p2)选择图像的一部分。我的问题是,我想使用相同的循环,不管它们的顺序如何

现在我有这个:

for (int x = p1.X; x != p2.X; x += Math.Sign(p2.X - p1.X))
        {
            for (int y = p1.Y; y != p2.Y; y += Math.Sign(p2.Y - p1.Y))
            {
                MessageBox.Show(String.Format("{0} {1}", x, y));
            }
        }
通过这个循环,我无法得到所有的数字: e、 g.从1/1到3/3,仅在2/2之前

我知道如何在两个循环中再循环一次,但由于我不知道实际循环的方式(减少或增加),我不能只从循环中加/减一个


任何帮助都将不胜感激

您可以从最低的X循环到最高的X,然后对Y执行相同的操作

for (int x = Math.Min(p1.X, p2.X); x <= Math.Max(p1.X, p2.X); x++){
  for (int y = Math.Min(p1.Y, p2.Y); y <= Math.Max(p1.Y, p2.Y); y++){
    MessageBox.Show(String.Format("{0} {1}", x, y));
  }
}

for(int x=Math.Min(p1.x,p2.x);x您可以从最低的x循环到最高的x,然后对Y执行相同的操作

for (int x = Math.Min(p1.X, p2.X); x <= Math.Max(p1.X, p2.X); x++){
  for (int y = Math.Min(p1.Y, p2.Y); y <= Math.Max(p1.Y, p2.Y); y++){
    MessageBox.Show(String.Format("{0} {1}", x, y));
  }
}

for(int x=Math.Min(p1.x,p2.x);x输入可以以任何一种方式输入,但不清楚他是否只需要覆盖这些点之间的所有像素,或者是否应该按照输入对应的顺序进行。实际方向并不重要,因此这会起作用。谢谢!输入可以以任何一种方式输入,但不清楚他是否只需要编辑以覆盖这些点之间的所有像素,或者是否应该按照与输入对应的顺序进行。实际方向并不重要,因此这会起作用。谢谢!关键是将x与p2.x+dx进行比较,而不仅仅是p2.x。经过两次单步执行后,我发现关键是将x与p2.x+dx进行比较,而不仅仅是p2.x经过两次,我明白了