我正在尝试使用 c# 开发远程桌面应用程序。所以我有几个关于基于图片框的鼠标坐标计算的问题
假设我有图片框,当我将鼠标移动到 C# 中的图片框时,我想捕获鼠标坐标?
如果我单击图片框上的位置 (200, 300)。那么我如何以
编程方式确定图片框的分辨率并根据该分辨率转换(200,300)坐标。当我将(x,y)坐标发送到其他机器时,如果该电脑的分辨率为 1024x768,那么我需要使用什么逻辑根据该电脑分辨率转换(x,y)
如果可能的话,帮助我解决我的问题的小示例代码。谢谢
我正在尝试使用 c# 开发远程桌面应用程序。所以我有几个关于基于图片框的鼠标坐标计算的问题
假设我有图片框,当我将鼠标移动到 C# 中的图片框时,我想捕获鼠标坐标?
如果我单击图片框上的位置 (200, 300)。那么我如何以
编程方式确定图片框的分辨率并根据该分辨率转换(200,300)坐标。
当我将(x,y)坐标发送到其他机器时,如果该电脑的分辨率为 1024x768,那么我需要使用什么逻辑根据该电脑分辨率转换(x,y)
如果可能的话,帮助我解决我的问题的小示例代码。谢谢
这听起来像一个微不足道的问题,如果它与家庭作业相关,请添加标签homework
。
int remote_x = local_x * remote_width / local_width;
int remote_y = local_y * remote_height / local_height;
图片框 (local_width
和local_height
) 的尺寸可以通过使用pictureBox.Width
和来确定pictureBox.Height
。光标坐标,local_x
并且local_y
可以被请求或者是事件数据(例如MouseMove
事件的)的一部分。
简单,最简单的方法是将坐标转换为标准化形式(范围从 0 到 1)。然后您可以使用这些归一化坐标来计算另一个分辨率上的 mousePosition。这样设备就不需要知道其他设备的分辨率。
所以:
//First Normalize the clickPosition using the current resolution
//clickPos(200,300) and resolution(800,600) => normalized(0.25,0.5)
var normalized = clickPos/resolution;
//Now you can send this information to the other device
//The other device uses the normalized parameter to calculate the mouseClick with his resolution
//normalized(0.25,0.5) and otherResolution(1280,720) => otherDeviceClickPos(320, 360)
var otherDeviceClickPos = normalized * otherResolution;
如果您知道远程屏幕的分辨率并且您知道图片框的大小,那么它只是四舍五入到整数的比率。