Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取鼠标移动的距离_C#_.net_Winforms_Mouseevent_Mousemove - Fatal编程技术网

C# 获取鼠标移动的距离

C# 获取鼠标移动的距离,c#,.net,winforms,mouseevent,mousemove,C#,.net,Winforms,Mouseevent,Mousemove,我有一个表格,里面有一个小的面板,名为Player。如何将面板“链接”到用户的鼠标,使其随鼠标移动而移动 我已经订阅了Player\u MouseMove到Player.MouseMove事件,但我无法计算鼠标实际移动了多少。我能想出的唯一办法就是有这样一个: private Point previousLocation; private void Player_MouseMove(object sender, MouseEventArgs e) { int differenceX,

我有一个表格,里面有一个小的
面板
,名为
Player
。如何将面板“链接”到用户的鼠标,使其随鼠标移动而移动

我已经订阅了
Player\u MouseMove
Player.MouseMove
事件,但我无法计算鼠标实际移动了多少。我能想出的唯一办法就是有这样一个:

private Point previousLocation;

private void Player_MouseMove(object sender, MouseEventArgs e)
{
    int differenceX, differenceY;
    differenceX = e.X - previousLocation.X;
    differenceY = e.Y - previousLocation.Y;
    previousLocation = e.Location;
}
这看起来很愚蠢,有一个额外的变量,每次都计算差异。完美的方式就像
Player.LinkToCursor()之类的,但如果没有自动化的方法,至少还有更好的方法吗?

看看我,我看不出有什么能帮助你更好地完成这项工作

但是,您可以做一件事:

Point difference = e.Location - (Size)previousLocation;

向量算术;)

“…有一个额外的变量”这不是一个额外的变量,这是一个必需的变量。你必须把它存放在某个地方。这实际上是一种相当标准的方法。我已经制作了相当多的小型2D游戏,“获取当前,与上一个比较,将当前分配给上一个,重复”的循环被用于所有的位置-时间间隔和按钮检测-其他一些常见的。@SteveWellens是的,我希望它已经存储在
MouseEventArgs e
中,这会使我的变量无用:)但既然不是,你是对的。我希望找到更有用的东西,但我会这样做:)谢谢你的回答!