2012-06-22 189 views
0

我想用c#开发远程桌面应用程序。所以,我有几个问题,关于基于图片框的鼠标坐标计算如何根据分辨率计算鼠标坐标c#

  1. 假设我有图片框,我想捕捉鼠标的坐标时,我会提出我的鼠标 在C#是图片框?

  2. 如果我在图片框上点击位置(200,300)。那么我怎样才能确定
    以编程方式分辨图片框并根据该分辨率转换该(200,300)坐标基于 。

  3. 时我会送(X,Y)根据该PC的分辨率协调到其他机器,如果该电脑拥有分辨率有像 1024×768,然后我需要使用转换(X,Y)是什么逻辑

如果可能的话,帮助我用我的问题的小样本代码。谢谢

+0

这是否回答对您有帮助? http://stackoverflow.com/a/3922615/290343 –

+0

_“我想用c#开发一个远程桌面应用程序”_ - [why](http://www.codeproject.com/Articles/43705/Remote-桌面使用C-NET)[重塑](http://www.realvnc.com/)[the wheel](http://www.teamviewer.com/)?您将遇到很多在这些产品中已解决并修复的问题。说实话,如果简单的数学和[手动](http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mousemove(v = vs.100).aspx)是一个问题,您将如何实施正在运行的远程桌面应用程序? – CodeCaster

回答

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; 
+1

如何通过c#查找分辨率。在我的情况下,分辨率将是图片框的高度和宽度? – Thomas

+0

那个画框到底是什么?是你写的一个自定义的东西还是一个wpf控件(或winforms)?如果它是一个wpf控件,可以很容易地从控件的宽度和高度属性中获取宽度和高度。 (pictureBox.Width,pictureBox.Height) –

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事件)。

0

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