Хорошо, я пытаюсь создать небольшую программу, которая будет "убегать" от мыши.
Итак, чтобы получить координаты мыши для всего экрана, а не только для элемента управления формы, мне нужно было создать маленького помощника:
static class MouseHelper
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool GetCursorPos(ref Point pt);
public static Point GetPosition()
{
Point w32Mouse = new Point();
GetCursorPos(ref w32Mouse);
return w32Mouse;
}
}
Теперь я подумал, что собираюсь использовать событие MouseMove ... но это не работает и за пределами элемента управления формы, поэтому у меня есть автоматически включенный таймер в цикле 10 мс, называемый timerMouseMove.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private bool CollisionCheck()
{
Point win32Mouse = MouseHelper.GetPosition();
if (win32Mouse.X <= Location.X || win32Mouse.X >= (Location.X + Width))
return false;
if (win32Mouse.Y <= Location.Y || win32Mouse.Y >= (Location.Y + Height))
return false;
return true;
}
private void timerMouseMove_Tick(object sender, EventArgs e)
{
if (CollisionCheck())
Location = new Point(Location.X + 1, Location.Y + 1);
}
}
Так что это хорошо работает, по крайней мере, у меня работает проверка столкновений и еще много чего. Но теперь, как мне выяснить, с какой стороны формы столкнулась мышь, чтобы я мог обновить ее местоположение, чтобы двигаться в противоположном направлении, с которым сталкивается мышь? И такой халф