C#:在多屏幕环境中,将屏幕绝对坐标映射到相对屏幕坐标

本文关键字:屏幕 映射 坐标 屏幕坐标 相对 环境 | 更新日期: 2023-09-27 18:28:04

我需要一种方法来将一些绝对坐标(相对于主屏幕)映射到某个屏幕的相对坐标。

例如,如果您配置了两个屏幕,如果主屏幕是右侧屏幕,则会有一些指向左侧屏幕的有效负坐标。我需要将这些绝对坐标始终转换为相对于左屏幕的正数。

编辑:目标是使用知道某些绝对坐标在某些可用屏幕中是否有效

    Screen.WorkingArea.Contains(thePoint),

在可用屏幕上迭代。

感谢

C#:在多屏幕环境中,将屏幕绝对坐标映射到相对屏幕坐标

这应该适用于任何屏幕配置:

static Point GetRelativeCoordinates(Point absoluteCoordinates)
{
    var screen = Screen.FromPoint(absoluteCoordinates);
    return new Point(absoluteCoordinates.X - screen.Bounds.Left, absoluteCoordinates.Y - screen.Bounds.Top);
}

Bound属性存储屏幕的TopLeft角的绝对坐标([0, 0]是主屏幕的左上角),因此无论有多少屏幕,将绝对坐标转换为相对坐标都非常简单。

我还没有测试代码,但应该可以运行。