0
好吧,我正在嘗試做一個小小的gag程序,它會從鼠標「逃走」。讓winform遠離鼠標
因此,要獲得鼠標座標整個屏幕,而不僅僅是形式的控制,我不得不創建一個小幫手:
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事件...但是這對於表單控件外部不起作用,所以我在稱爲timerMouseMove的10ms循環中有一個自動啓用的定時器。
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);
}
}
所以這工作得很好,至少我有碰撞檢查工作和whatnot。但現在,我應該如何確定鼠標碰撞的形狀的哪一側,以便我可以更新其位置,以便鼠標與它發生相反的方向移動?而且這樣的halp