0

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

  1. 假设我有图片框,当我将鼠标移动到 C# 中的图片框时,我想捕获鼠标坐标?

  2. 如果我单击图片框上的位置 (200, 300)。那么我如何以
    编程方式确定图片框的分辨率并根据该分辨率转换(200,300)坐标。

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

如果可能的话,帮助我解决我的问题的小示例代码。谢谢

4

3 回答 3

2

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

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

图片框 (local_widthlocal_height) 的尺寸可以通过使用pictureBox.Width和来确定pictureBox.Height。光标坐标,local_x并且local_y可以被请求或者是事件数据(例如MouseMove事件的)的一部分。

于 2012-06-22T08:40:51.367 回答
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;
于 2012-06-22T09:18:16.740 回答
0

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

于 2012-06-22T08:43:47.253 回答