如何根据分辨率c#计算鼠标坐标

时间:2012-06-22 08:22:52

标签: c#

我正在尝试使用c#开发远程桌面应用程序。所以我对基于图片框的鼠标坐标计算有几个问题

  1. 假设我有图片框,我想在移动鼠标时捕获鼠标坐标 在c#中的那个图片框上?

  2. 如果我点击我的照片框上的位置(200,300)。那我怎么决定呢 以编程方式解决图片框并基于转换该(200,300)坐标 该决议。

  3. 当我将(x,y)坐标发送到其他机器时,如果该PC有分辨率的话 1024x768那么我需要用什么逻辑来根据pc分辨率转换(x,y)

  4. 如果可能的话,帮助我解决我的问题的小样本代码。感谢

3 个答案:

答案 0 :(得分:2)

这听起来像一个微不足道的问题,如果与家庭作业相关,请添加标签homework

int remote_x = local_x * remote_width / local_width;
int remote_y = local_y * remote_height / local_height;

图片框的尺寸(local_widthlocal_height)可以确定,例如使用pictureBox.WidthpictureBox.Height。可以请求光标坐标local_xlocal_y,也可以将其作为事件数据的一部分(例如MouseMove事件)。

答案 1 :(得分:1)

简单,最简单的方法是将坐标转换为标准化形式(范围从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;

答案 2 :(得分:0)

如果您知道远程屏幕的分辨率并且您知道图片框的大小,那么它只是四舍五入为整数。