Перенаправление/повторный набор/предварительная фильтрация ввода курсора с сенсорного экрана - программирование
Подтвердить что ты не робот

Перенаправление/повторный набор/предварительная фильтрация ввода курсора с сенсорного экрана

МОЯ ПРОБЛЕМА

Хорошо, ну, основной ответ на этот вопрос:

Cursor.Clip = new Rectangle(x1, y1, x2, y2);

Но моя проблема немного сложнее.

Мне нужно, чтобы он правильно отображал себя на определенные границы окон, так что сенсорный ввод будет ограничен этим окном, но будет правильно закрепить себя в окне, чтобы при касании левого верхнего угла углу или в правом нижнем углу сенсорного экрана, он поместит курсор в верхнее левое или нижнее правое окно. Использование Cursor.Clip не сделает этого и все, что я касаюсь сенсорным экраном, который вне этой зоны отсечения будет просто отображаться на ближайший край окна, откуда я прикасаюсь.

Есть ли что-нибудь, что позволит мне предварительно фильтровать положение мыши, чтобы я мог правильно отрегулировать его?

ЕСЛИ ВСЕ ВЫШЕ НЕИСПРАВНОСТИ

В качестве альтернативы я мог бы попытаться найти какой-то код, который преобразует поток мыши в TUIO и подает его в приложение таким образом, но я надеялся, что мне не придется это делать. Поэтому, если кто-нибудь знает, как я могу это сделать, это будет полезно, если мой первоначальный запрос невозможен.

Для тех, кто хочет знать, что я делаю

Если вам нужно точно знать, почему я это делаю, я в основном пытаюсь подавать события мыши с сенсорного экрана, загружаемого в видео, в 3D-приложение, которое может принимать входные данные (через обычные события мыши или TUIO) который будет рисовать на этом видео, но не имеет возможности максимизировать до полного разрешения экрана, потому что он будет отображать только размер, на который он установлен.

БЫТЬ ЧИСТЫМ

  • Я не против, чтобы нормальная мышь была нарушена любым из этого.
  • Я говорю о системе Windows 7, использующей Windows 7 Touch по умолчанию
  • Вход поступает через USB, а не через последовательный порт или что-то в этом роде.
4b9b3361

Ответ 1

Вы можете использовать Reactive Extensions для клика прикосновения

var movingEvents = 
      Observable.FromEventPattern<MouseEventHandler, MouseEventArgs>(
        h => this.MouseMove += h, h => this.MouseMove -= h)
          .Select(x => x.EventArgs.Location)
          .Where(location =>
               location.X >= viewPort.Location.X 
                  && location.X <= viewPort.Location.X + viewPort.Width
                  && location.Y >= viewPort.Location.Y 
                  && location.Y <= viewPort.Location.Y + viewPort.Height);

movingEvents.Subscribe(update);

public void update(Point p)
{
    textBox1.Text = p.ToString();
}

http://www.codeproject.com/Articles/52308/The-Rx-Framework-By-Example