C# 从x1,y1到x2,y2的循环,无论它们的顺序如何
我希望能够通过两点(p1,p2)选择图像的一部分。我的问题是,我想使用相同的循环,不管它们的顺序如何 现在我有这个: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
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经过两次,我明白了