WPF- 模拟触发Touch Events
生活随笔
收集整理的這篇文章主要介紹了
WPF- 模拟触发Touch Events
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
WPF- 模擬觸發(fā)Touch Events 原文:WPF- 模擬觸發(fā)Touch Events
基于API:
[DllImport("User32.dll")]public static extern bool InitializeTouchInjection(uint maxCount = 256, TouchFeedback feedbackMode = TouchFeedback.DEFAULT);[DllImport("User32.dll")]public static extern bool InjectTouchInput(int count, [MarshalAs(UnmanagedType.LPArray), In] PointerTouchInfo[] contacts);實現(xiàn)效果:點擊按鈕,自動觸發(fā)TouchDown事件、獲取TouchEventArgs參數(shù)得到坐標,創(chuàng)建Line并設(shè)置X1、Y1屬性,緊接著觸發(fā)TouchMove、TouchUp事件,得到TouchUp的TouchEventArgs設(shè)置Line的X2、Y2屬性。
private void MainWindow_TouchUp(object sender, TouchEventArgs e) {System.Windows.Input.TouchPoint oPos = e.GetTouchPoint(this);this.ProxyLine.X2 = oPos.Position.X;this.ProxyLine.Y2 = oPos.Position.Y;this.GdRootZm.Children.Add(this.ProxyLine);Console.WriteLine("TouchID " + e.TouchDevice.Id + " TouchUp "+ oPos.Position.X + " " + oPos.Position.Y); }private void MainWindow_TouchMove(object sender, TouchEventArgs e) {System.Windows.Input.TouchPoint oPos = e.GetTouchPoint(this);Console.WriteLine("TouchID " + e.TouchDevice.Id + " TouchMove "+ oPos.Position.X + " " + oPos.Position.Y); }private Line ProxyLine;private void MainWindow_TouchDown(object sender, TouchEventArgs e) {System.Windows.Input.TouchPoint oPos = e.GetTouchPoint(this);Line oLine = new Line();oLine.Stroke = new SolidColorBrush(Colors.Red);oLine.StrokeThickness = 2;oLine.X1 = oPos.Position.X;oLine.Y1 = oPos.Position.Y;this.ProxyLine = oLine;Console.WriteLine("TouchID " + e.TouchDevice.Id + " TouchDown " + oPos.Position.X + " " + oPos.Position.Y); }Console Write Result:
? 效果圖如下:
private void SimulateTouch(int x, int y) {// Touch Down SimulatePointerTouchInfo contact = MakePointerTouchInfo(x, y, 5, 1);PointerFlags oFlags = PointerFlags.DOWN | PointerFlags.INRANGE | PointerFlags.INCONTACT;contact.PointerInfo.PointerFlags = oFlags;bool bIsSuccess = TouchInjector.InjectTouchInput(1, new[] { contact });// Touch Move Simulateint nMoveIntervalX = this.GetRandomSeed().Next(-60, 60);int nMoveIntervalY = this.GetRandomSeed().Next(-60, 60);contact.Move(nMoveIntervalX, nMoveIntervalY);oFlags = PointerFlags.INRANGE | PointerFlags.INCONTACT | PointerFlags.UPDATE;contact.PointerInfo.PointerFlags = oFlags;TouchInjector.InjectTouchInput(1, new[] { contact });// Touch Up Simulatecontact.PointerInfo.PointerFlags = PointerFlags.UP;TouchInjector.InjectTouchInput(1, new[] { contact }); }?Source Url:https://github.com/DuelCode/TouchSimulate
?Multi Touch Also Support Like this:
private void BdrSimulateZm_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) {// Touch Down Simulateint x1 = this.GetRandomSeed().Next(50, 1680 - 100);int y1 = this.GetRandomSeed().Next(50, 1080 - 100);PointerTouchInfo oContact1 = MakePointerTouchInfo(x1, y1, 5, 1);int x2 = this.GetRandomSeed().Next(50, 1680 - 100);int y2 = this.GetRandomSeed().Next(50, 1080 - 100);PointerTouchInfo oContact2 = MakePointerTouchInfo(x2, y2, 5, 1);PointerFlags oFlags = PointerFlags.DOWN | PointerFlags.INRANGE | PointerFlags.INCONTACT;oContact1.PointerInfo.PointerFlags = oFlags;oContact2.PointerInfo.PointerFlags = oFlags;TouchInjector.InjectTouchInput(2, new[] { oContact1, oContact2 });// Touch Move Simulateint nMoveIntervalX = this.GetRandomSeed().Next(-60, 60);int nMoveIntervalY = this.GetRandomSeed().Next(-60, 60);oContact1.Move(nMoveIntervalX, nMoveIntervalY);oContact2.Move(nMoveIntervalX, nMoveIntervalY);oFlags = PointerFlags.INRANGE | PointerFlags.INCONTACT | PointerFlags.UPDATE;oContact1.PointerInfo.PointerFlags = oFlags;oContact2.PointerInfo.PointerFlags = oFlags;TouchInjector.InjectTouchInput(2, new[] { oContact1 , oContact2 });// Touch Up SimulateoContact1.PointerInfo.PointerFlags = PointerFlags.UP;oContact2.PointerInfo.PointerFlags = PointerFlags.UP;TouchInjector.InjectTouchInput(2, new[] { oContact1, oContact2 }); }?
posted on 2018-08-14 09:17 NET未來之路 閱讀(...) 評論(...) 編輯 收藏轉(zhuǎn)載于:https://www.cnblogs.com/lonelyxmas/p/9472580.html
總結(jié)
以上是生活随笔為你收集整理的WPF- 模拟触发Touch Events的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国行iphone第一次安装APP网络状况
- 下一篇: 怎么样制作u盘安装系统软件 制作U盘安装