如何在多个显示器上获取光标位置?

4

我正在尝试获取多显示器中光标的位置。使用

Point cursorPosition = Cursor.Position;

返回光标相对于当前所在监视器的位置。如果我有两个监视器,并使用上述代码行,并且我的鼠标在第二个监视器上(位于第一个监视器的右侧),并将光标绘制到图像上,则它将出现在左侧监视器上,而应该出现在右侧监视器上。
编辑:
我正在截取所有监视器的屏幕截图,并希望将光标添加到位图中,但是使用Cursor.Position会将光标放置在屏幕截图位图的“左侧”监视器上,即使光标在“右侧”监视器上也是如此。
谢谢

你如何绘制?所有的显示器共享一个坐标空间。 - SLaks
你可以获取每个显示器的分辨率,并将鼠标位置归一化到整个屏幕分辨率吗? - Shawnic Hedgehog
@SLaks,Cursor.Position 始终相对于当前显示器而非桌面/屏幕。在切换到新的显示器时,它会重置回 0/0。 - Ron Beyer
2
@RonBeyer:我试过了,那不是真的。 - SLaks
@SLaks 您是正确的,我很抱歉我在想其他事情,我撤回我的声明。 - Ron Beyer
1个回答

4
您可以获取光标所在位置的屏幕:
var screen = Screen.FromPoint(Cursor.Position);

在显示图像之前,请考虑屏幕的情况。


我在问题表述上可能应该更加清晰。我正在对屏幕进行截图,而我获取的是VirtualScreen大小(即所有显示器作为一个整体的大小)。我想把光标放在正确的位置。如果有帮助的话,我会发布我的答案。 - nd2432
完整的命名空间是 System.Windows.Forms.Screen.FromPoint(Cursor.Position);,如果你想知道的话。 - vinsa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接