2

Panelフォームがあり、その中にと呼ばれる小さなものがありPlayerます。パネルをユーザーのマウスに「リンク」して、マウスの動きに合わせてパネルが動くようにするにはどうすればよいですか?

すでにイベントを購読Player_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();ですが、自動化された方法がない場合、少なくともより良い方法はありますか?

4

1 に答える 1

6

http://msdn.microsoft.com/en-us/library/system.windows.forms.mouseeventargs.aspxを見ると、これをより良く行うのに役立つものは何も見つかりません。

ただし、できることが1つあります。

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

ベクトル-算術;)

于 2013-02-18T16:40:56.613 に答える