【问题标题】:C# How to get the Coordinates of a specific Point on Screen. (not mouselocation)C# 如何获取屏幕上特定点的坐标。 (不是鼠标定位)
【发布时间】:2011-01-22 15:26:16
【问题描述】:

我有以下问题: 我正在用 C# 编写一个 WinForms 应用程序,我想获取屏幕 - 图片的一部分的坐标,在本例中是这只手的顶部(由红点标记)。

有人知道我如何通过编程方式做到这一点吗?

("Koordinaten dieses Punktes" = 该点的坐标)

编辑: 抱歉让您感到困惑,上面的图片仅应说明我的问题。我的程序的实际目标是将飞镖游戏的鼠标控制手移动到正确的位置,但仅将 MouseLocation 设置为固定点是不可能的,因为飞镖手每次转动都会获得另一个 x :y 到 MouseLocation 的距离。所以我需要找到飞镖的位置(-箭头)。

我希望每个人都知道我现在的问题是什么。

Picture of the dart game

【问题讨论】:

  • 代码如何猜测有人在桌面上画了一只手?
  • 我们可以假设什么样的信息?我的意思是,你知道图片上点的相对坐标吗?还是我们必须逐像素扫描整个桌面图像以寻找特定位置?桌面上的图片是怎么画的?是透明表格的一部分,还是直接画到桌面的DC上?
  • 它非常接近模式识别......而且红点甚至可以在背景图像上
  • @Shekhar_Pro,听起来确实像是 OpenCV 的工作。

标签: c# winforms location screen coordinates


【解决方案1】:

在某些情况下使用:

this.PointToScreen(new System.Drawing.Point(250, 300));

将 Point 替换为您感兴趣的点(相对于表格)。

【讨论】:

  • 当窗口离开屏幕时它对我不起作用。请参阅下面的解决方案。
【解决方案2】:

如果您的窗口被最小化、隐藏或离开屏幕,Control.PointToScreen 将无法正常工作。 您必须下拉到与 Win32 API 的互操作:

所以从导入 API 开始:

[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool GetCursorPos(out Point lpPoint);

并使用它:

Point pts;
GetCursorPos(out pts);
MessageBox.Show(this, pts.ToString());

【讨论】:

    猜你喜欢
    • 2016-03-19
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    相关资源
    最近更新 更多