日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

WPF- 模拟触发Touch Events

發布時間:2024/10/12 asp.net 118 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WPF- 模拟触发Touch Events 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
WPF- 模擬觸發Touch Events 原文:WPF- 模擬觸發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);

實現效果:點擊按鈕,自動觸發TouchDown事件、獲取TouchEventArgs參數得到坐標,創建Line并設置X1、Y1屬性,緊接著觸發TouchMove、TouchUp事件,得到TouchUp的TouchEventArgs設置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未來之路 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lonelyxmas/p/9472580.html

總結

以上是生活随笔為你收集整理的WPF- 模拟触发Touch Events的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕亚洲精品 | 偷偷操av | 欧美日韩亚洲一区二区 | www香蕉| 日韩视频在线观看免费视频 | 一本久道视频一本久道 | 久草视频免费播放 | 毛片内射 | 黄色a视频| 免费看的黄色网 | 久久精品视屏 | 久久久久99精品成人片三人毛片 | 韩国成人理伦片免费播放 | 一区二区天堂 | 极品少妇xxx | 成人h片 | 国产精品揄拍100视频 | 偷操| 亚洲人久久 | 91免费高清在线观看 | 人人爱人人澡 | 九九久久视频 | 亚洲永久精品一区 | 天天干b | 爱情岛黄色 | 欧美日韩一区二区在线 | 瑟瑟久久| 色导航 | 伊人久久久| k8经典成人理伦片 | 免费看日韩 | 久久精品国产亚洲AV黑人 | 六月丁香婷婷网 | 欧日韩一区二区三区 | 国产亚洲欧美在线视频 | 亚洲精品视频观看 | 五月天丁香婷 | 日本55丰满熟妇厨房伦 | 欧美深夜在线 | 成人免费观看在线视频 | www国产www | 裸体美女免费视频网站 | 欧美色精品在线 | 精品人妻一区二区三 | 91亚洲精品在线 | 被黑人各种姿势猛c哭h文1 | 成人免费视频a | www.久久视频 | 国产视频在线观看一区 | 日日夜夜天天综合 | 亚洲网站免费观看 | 伊人网在线视频观看 | 翔田千里一区二区 | 99久久久无码国产精品免费 | 日本一区二区三区久久 | 国产午夜手机精彩视频 | 台湾av在线 | 国产精品99无码一区二区视频 | 国产精品美女久久久久av超清 | 日韩一级一级 | 玖色视频| 制服诱惑一区 | 婷婷综合五月天 | 性色在线 | 亚洲视频图片 | 黄色大全免费看 | 国产美女无遮挡免费 | 一区二区黄色 | 欧美久久一区二区三区 | 教练含着她的乳奶揉搓揉捏动态图 | 黄色片在哪里看 | 中文字幕一区二区在线观看 | 国产精品电影一区二区三区 | 综合伊人av | 国产福利一区在线观看 | 日本妈妈3 | 欧美日韩亚洲另类 | 人妻巨大乳一二三区 | 欧美黑人添添高潮a片www | 国产91清纯白嫩初高中在线观看 | 久草国产视频 | 日韩激情网站 | 国产精品理论片在线观看 | 成人天堂av| 一级黄在线观看 | 欧美日韩黑人 | 极品美女销魂一区二区三区 | 好色艳妇小说 | 色偷偷视频 | 国产精品7 | 欧美日韩亚洲国产综合 | 日本一区二区欧美 | 99re99| 中国黄色免费 | 一级免费看片 | 天堂欧美 | 日本黄色一级网站 | 粉嫩av一区二区三区四区五区 | 欧美视频一区二区在线观看 |