将坐标保存在数组中

Save Coordinates in a Array

我想将像素搜索中找到的数据保存在数组中并再次输出,但我不知道如何开始。

这基本上就是我当前的搜索功能:

object result = au3.PixelSearch(77, 270, 190, 298, 0x29343F, 5);

if (result.ToString() != "1")
{
    object[] resultCoord = (object[])result;
    au3.MouseClick("LEFT", (int)resultCoord[0], (int)resultCoord[1], 1, 5);
}

数组的原因是,我想扩展它。
示例:找到像素后,鼠标已经移动并单击了一次,则应将坐标保存在数组中,如果像素不再可见,则应扩展函数并在相同坐标处再次单击。对我来说,坐标不是必须通过鼠标点击来保存的,它也可以通过 if 语句保存

if (result.ToString() != "1")

这怎么可能?

好的,让我们使用一个列表(记得在代码的上半部分使用 System.Collections.Generic; :P)

public List<object> savedCoords = new List<object>(); //declare this out of your search function or it will be overwrited each search;

然后您可以将搜索结果添加到列表中:

object result = au3.PixelSearch(77, 270, 190, 298, 0x29343F, 5);

if (result.ToString() != "1")
{
    savedCoords.Add(result); //<--HERE
    object[] resultCoord = (object[])result;
    au3.MouseClick("LEFT", (int)resultCoord[0], (int)resultCoord[1], 1, 5);
}

如果您想搜索列表,请告诉我 au3.PixelSearch 返回的对象的结构,我将创建一个 lambda 来执行此操作并编辑 eanswer

您应该使用更好的像素坐标描述。例如 system.Drawing.Point,但您也可以创建自己的等效类型。

那么你可以只用一个列表来保留多个点

var myList = new List<Point>();
myList.Add(new Point(xCoordinate, yCoordinate));

我不清楚您是如何获得坐标的,但是每当您发现自己在使用 object 时,您真的应该停下来想想这是否是您可以用于解决问题的最佳类型。与字符串相同,它们用于表示文本,而不是任意对象。