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

时间:2014-10-28 14:31:59

标签: c# screen coordinates

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

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

编辑:目标是使用

知道某些可用屏幕中的某些绝对坐标是否有效
    Screen.WorkingArea.Contains(thePoint),

迭代可用的屏幕。

谢谢

1 个答案:

答案 0 :(得分:2)

这适用于任何屏幕配置:

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]是主屏幕的左上角),因此转换为绝对值无论你有多少个屏幕,坐标到相对的坐标都非常简单。

我还没有对代码进行测试,但应该工作。