0
그래, 마우스에서 도망 갈 작은 개그 프로그램을 만들려고합니다. 그래서 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);
}
}
이렇게 멋지게 작동합니다. 따라서 적어도 충돌 확인 작업과 기타 등등이 있습니다. 그러나 이제는 마우스가 충돌 한 형태의 측면을 파악하여 마우스가 반대 방향으로 이동하도록 위치를 업데이트 할 수 있도록 어떻게해야합니까? 그리고 그러한 Halp