我正在尝试使用c#开发远程桌面应用程序。所以我对基于图片框的鼠标坐标计算有几个问题
假设我有图片框,我想在移动鼠标时捕获鼠标坐标 在c#中的那个图片框上?
如果我点击我的照片框上的位置(200,300)。那我怎么决定呢 以编程方式解决图片框并基于转换该(200,300)坐标 该决议。
当我将(x,y)坐标发送到其他机器时,如果该PC有分辨率的话 1024x768那么我需要用什么逻辑来根据pc分辨率转换(x,y)
如果可能的话,帮助我解决我的问题的小样本代码。感谢
答案 0 :(得分:2)
这听起来像一个微不足道的问题,如果与家庭作业相关,请添加标签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
事件)。
答案 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)
如果您知道远程屏幕的分辨率并且您知道图片框的大小,那么它只是四舍五入为整数。