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

标签 c# screen coordinates

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

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

编辑:目标是使用以下命令了解某些绝对坐标在某些可用屏幕中是否有效

    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 属性存储屏幕的TopLeft 角的绝对坐标 ([0, 0] 是主屏幕的顶部、左侧),因此无论您有多少个屏幕,将绝对坐标转换为相对坐标都非常简单。

我还没有测试过代码,但它应该可以工作。

关于C#:在多屏幕环境中将屏幕绝对坐标映射到相对屏幕坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26610973/

相关文章:

c# - 使用 MSTest 和 Moq 测试存储库 - .Verify 不工作

c# - 在 Web UI 中从 VBScript 函数调用 C# 函数

javascript - window.screenX/screenY 没有在 chrome 上更新

java - 如何正确缩放给定坐标以适应 View 的边界而不失真?

swift - 从 Swift 中的触摸返回坐标

c# - 统一: What is Unity Measurements?

c# - 在 Windows 10 应用程序中实现 TreeView

c# - 单元格中的Excel图像

Android 屏幕尺寸和密度

javascript - 根据屏幕尺寸更改 Javascript 属性(HTML 中内联) - 就像 CSS 媒体查询