转换鼠标位置

AJ152

我需要有关鼠标位置和屏幕分辨率的帮助。

我在两个不同的计算机上运行两个应用程序:

application1(分辨率:1920 x 1200)捕获鼠标位置,然后将位置值发送到application2。

application2(分辨率:1280 x 800)接收并基于这些值设置光标位置。

这工作得很好,我遇到的问题是,与application2相比,application1具有不同的屏幕分辨率,因此从application1发送的鼠标位置不会转换为application2上的屏幕分辨率和光标位置。

有人知道如何将这些光标位置(X,Y)值转换为正确的值吗?所有这一切都假定application2表单窗口当然被完全最大化,否则必须基于来完成类似的值转换。表单窗口大小。

这是application1捕获鼠标位置的方式:

    Point mouseLocation;
    public Form1()
    {
        InitializeComponent();
        this.MouseMove += new MouseEventHandler(Form1_MouseMove);
    }

    void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        mouseLocation = e.Location;
        // now we're send the "mouseLocation" values to the application2

    }

这就是application2基于接收到的值设置光标位置的方式:

    public Form1()
    {
        InitializeComponent();


        // we bring the position values
        int x_value = int.Parse(position[0].ToString());
        int y_value = int.Parse(position[1].ToString());
        Cursor.Position = new Point(x_value, y_value);
    }
斯里拉姆·萨克蒂维

您可以编写一个简单的帮助方法,如下所示:

private static Point Translate(Point point, Size from, Size to)
{
    return new Point((point.X * to.Width) / from.Width, (point.Y * to.Height) / from.Height);
}

private static void Main(string[] args)
{
    Size fromResolution = new Size(1920, 1200);//From resolution
    Size toResolution = new Size(1280, 800);//To resolution

    Console.WriteLine(Translate(new Point(100, 100), fromResolution, toResolution));
    //Prints 66,66
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章