using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Interop; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Tango.SimulateTouch.UI.Native; using System.Security.Cryptography; using System.Threading; namespace Tango.SimulateTouch.UI { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { private Point downPosition; public MainWindow() { InitializeComponent(); TouchController.Init(); rect.TouchDown += Rect_TouchDown; rect.TouchUp += Rect_TouchUp; rect.TouchMove += Rect_TouchMove; } private void Rect_TouchDown(object sender, TouchEventArgs e) { downPosition = e.GetTouchPoint(rect).Position; rect.Fill = Brushes.Blue; } private void Rect_TouchUp(object sender, TouchEventArgs e) { rect.Fill = Brushes.Red; } private void Rect_TouchMove(object sender, TouchEventArgs e) { var position = e.GetTouchPoint(rect).Position; Canvas.SetLeft(rect, (Canvas.GetLeft(rect) + position.X) - downPosition.X); Canvas.SetTop(rect, (Canvas.GetTop(rect) + position.Y) - downPosition.Y); } private void BtnStart_Click(object sender, RoutedEventArgs e) { Point rectPosition = rect.PointToScreen(new Point(0, 0)); Size rectSize = new Size(rect.ActualWidth, rect.ActualHeight); Point lastDelta = new Point(0, 0); bool completed = false; Thread t = new Thread(() => { TouchController.TouchDown((int)(rectPosition.X + rectSize.Width / 2), (int)(rectPosition.Y + rectSize.Height / 2)); //Touch the middle of the red rectangle. Task.Factory.StartNew(() => //This is necessary to keep the touch session alive. { while (!completed) { TouchController.TouchMove((int)lastDelta.X, (int)lastDelta.Y); Thread.Sleep(100); } }); Thread.Sleep(1000); for (int i = 0; i < 51; i++) //Animate movement. { TouchController.TouchMove(i, i); lastDelta = new Point(i, i); Thread.Sleep(300); } completed = true; TouchController.TouchUp(); //Complete the touch. }); t.IsBackground = true; t.Start(); } } }