【问题标题】:problem in store mouse click coordinates to an array in c#将鼠标单击坐标存储到c#中的数组的问题
【发布时间】:2021-09-23 09:41:00
【问题描述】:

我有一个简单的问题,三天后无法解决,欢迎任何帮助

我在 C# 中有一个图片框,我想在 4 个不同的地方单击图像,我需要将这 4 个点的坐标存储在一个数组中

我有这个代码

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
   ...
    }

并且我想点击图像 4 次(例如使用此坐标 (10,35)(30,55)(60,150)(80,140)) 使用 e.X 和 e.Y 我只能存储一个点!我需要 4 个不同的点
而且我不知道必须写什么代码,坐标存储在这样的数组中:

double[] A = new double[]{ 10,35)(30,55)(60,150)(80,140)};

提前致谢!我搜索了3天,但我无法解决它

【问题讨论】:

  • 你能显示只得到一个坐标的代码吗?
  • 我建议您使用两个参数 X 和 Y pos 创建一个名为 MouseCordinates 的类,而不是数组。然后创建该类的列表。当 list.count >= 4 然后停止接受输入并遍历列表并简单地获取值。
  • 一些需要考虑的事情 - 1)一个坐标有两个数字,一个双精度代表一个数字,所以你不能将它用作你的数组类型(提示:查看元组)。 2) 每次点击都是一个单独的事件,这意味着每次点击都会调用 MouseDown 方法。您的数组需要持续更长的时间,因此您需要将其存储在方法之外

标签: c# arrays


【解决方案1】:

您可以通过在类中添加一个List<Point> 字段并在每次调用pictureBox1_MouseDown() 时为其添加一个点来实现此目的。

然后当列表中有 4 个项目时,将其中存储的 4 个点做一些事情,然后将其清除以准备接下来的 4 个点。

例如:

List<Point> _points = new List<Point>(); // List field to store points.

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
    _points.Add(e.Location);

    if (_points.Count == 4)
    {
        // Do something with _points.
        MessageBox.Show("4 locations clicked: \r\n" + string.Join(", ", _points));

        _points.Clear(); // Empty the array ready for the next 4 points.
    }
}

您可以将 MessageBox.Show() 替换为处理 4 点所需的任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 2019-08-14
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    相关资源
    最近更新 更多