我怎样才能获得最后3学期?

时间:2014-04-29 12:09:33

标签: c# mouse coordinate

我希望在表格(或图片框)上使用鼠标移动来获取最后3个X和Y坐标。每当我点击(右击更好)屏幕时,它都应该更新。 如何获得最后3个坐标?

我得到了坐标;

int Xcoordinate, Ycoordinate;

Xcoordinate = Cursor.Position.X;
Ycoordinate = Cursor.Position.Y;

label1.Text=Xcoordinate.ToSring();

listBox.Items.Add(Xcoordinate);

实际上我不知道我得到了最后一项,倒数第二项,但最后只有一项使用C#。 其次,可以在不使用列表框或任何类似工具箱项的情况下获取最后3个坐标,只需编写方法/函数。

此致

1 个答案:

答案 0 :(得分:0)

将它们添加到Stack。然后,您可以通过从堆栈中弹出最后三个元素来从堆栈中获取最后三个元素。

我建议使用堆栈而不是队列,因为你只关心最后三个而不是前三个。

使用Vector2堆栈存储x和y坐标。

private Stack<Vector2> history;

public Vector2[] GetLastThree()
{
    Vector2 [] array = new Vector2[3];
    array[0] = history.pop();
    array[1] = history.pop();
    array[2] = history.pop();

    return array;
}

另一种解决问题的方法,我更喜欢这个。这个你自己管理阵列。我认为它是一堆3个元素。

public CoordinateManager
{
        // Create an array of three elements. Initalize all to 0,0.
    private Vector2[] list = {Vector2.Zero, Vector2.Zero, Vector2.Zero};

    public void storeCoordinate(Vector2 coord)
    {
        int i;
        for(i = 0; i < 2; i++)  
          list[i] = list[i+1];

        list[i] = coord;
    }

    public void getLastThree()
    {
        return list;
    }
}