我需要一种方法将一些绝对坐标(相对于主屏幕)映射到某个屏幕的相对坐标。
例如,如果您配置了两个屏幕,如果主屏幕是右侧屏幕,则有一些有效的负坐标指向左侧屏幕。我需要将这些绝对坐标始终转换为相对于左屏幕的正数。
编辑:目标是使用以下命令了解某些绝对坐标在某些可用屏幕中是否有效
Screen.WorkingArea.Contains(thePoint),
迭代可用的屏幕。
谢谢
最佳答案
这应该适用于任何屏幕配置:
static Point GetRelativeCoordinates(Point absoluteCoordinates)
{
var screen = Screen.FromPoint(absoluteCoordinates);
return new Point(absoluteCoordinates.X - screen.Bounds.Left, absoluteCoordinates.Y - screen.Bounds.Top);
}
Bound
属性存储屏幕的Top
和 Left
角的绝对坐标 ([0, 0]
是主屏幕的顶部、左侧),因此无论您有多少个屏幕,将绝对坐标转换为相对坐标都非常简单。
我还没有测试过代码,但它应该可以工作。
关于C#:在多屏幕环境中将屏幕绝对坐标映射到相对屏幕坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26610973/