2014-10-23 2 views
-3

Я начал писать программное обеспечение для динамической балансировки, и мышь, которую я хочу перемещать бесконечно, будет действовать как датчик для считывания оборотов вала двигателя. В основном я буду указывать лазер на вал двигателя, а когда вал вращается, программное обеспечение рассчитает скорость вращения. (Я не говорю об акселерометрах).C# Перемещение мыши в бесконечном мире

Событие MouseMove запускается только в том случае, если курсор находится внутри экрана, но я хочу создать бесконечную (невидимую) область, в которой я могу перемещать мышь. Место будет доходить до миллионов или даже миллиардов, но это то, что я хочу. Как я могу это сделать?

Бест, Suat

+1

?????????? ???????????????? – TaW

+2

Зачем вам нужна ваша мышь (которая является устройством ввода, необходимым для графического интерфейса), чтобы выйти за пределы вашего экрана, где нет графического интерфейса? –

+1

well hide mouse – qwr

ответ

0

для того чтобы достигнуть бесконечного перемещения, вы можете переместить курсор в сторону противоположного экрана, когда он достигает одного:

private void Form1_MouseMove(object sender, MouseEventArgs e) 
{ 
    // This method should only work when the mouse is captured by the Form. 
    // For instance, when the left mouse button is pressed: 
    if ((e.Button & MouseButtons.Left) == 0) 
     return; 

    Point p = PointToScreen(e.Location); 
    int x = p.X; 
    int y = p.Y; 
    Rectangle bounds = Screen.PrimaryScreen.Bounds; 

    if (x <= bounds.Left) 
     x = bounds.Right - 2; 
    else if (x >= bounds.Right - 1) 
     x = bounds.Left + 1; 

    if (y <= bounds.Top) 
     y = bounds.Bottom - 2; 
    else if (y >= bounds.Bottom - 1) 
     y = bounds.Top + 1; 

    if (x != p.X || y != p.Y) 
     Cursor.Position = new Point(x, y); 
}