#734 – 在触摸事件中识别不同的手指(Recognizing Different Fingers in Touch Event Handlers)

翻译 2017年06月23日 15:41:17

原文地址:https://wpf.2000things.com/2013/01/15/734-recognizing-different-fingers-in-touch-event-handlers/

我们在WPF中处理低级别的触摸事件的时候,用户可能会使用不止一根手指进行触摸操作,而你想跟踪用户的某跟手指的触摸操作,你可以使用TouchEventArgs.TouchDevice.Id 属性。从手指按下到离开屏幕,每根手指的操作都对应着一个ID。

下面是一个例子:

private const double CircleWidth = 10;
private Dictionary<int, Point> LastPositionDict;
 
private void Canvas_TouchDown(object sender, TouchEventArgs e)
{
    try
    {
        TouchPoint tp = e.GetTouchPoint(null);
 
        AddEllipseAt(canvMain, tp.Position, Brushes.Red);
 
        LastPositionDict.Add(e.TouchDevice.Id, tp.Position);
    }
    catch (Exception xx)
    {
        MessageBox.Show(xx.ToString());
    }
}
 
private void Canvas_TouchMove(object sender, TouchEventArgs e)
{
    TouchPoint tp = e.GetTouchPoint(null);
 
    AddLineFromTo(canvMain, LastPositionDict[e.TouchDevice.Id], tp.Position, Brushes.Black);
    LastPositionDict[e.TouchDevice.Id] = tp.Position;
}
 
private void Canvas_TouchUp(object sender, TouchEventArgs e)
{
    TouchPoint tp = e.GetTouchPoint(null);
 
    AddEllipseAt(canvMain, tp.Position, Brushes.Blue);
    LastPositionDict.Remove(e.TouchDevice.Id);
}

上面的代码中,我们为一个Canvas注册了触摸处理事件,画出手指移动的轨迹,并在手指按下和离开屏幕的时候添加开始和结束点。

我们同时在屏幕上放下两个手指并移动,通过ID来分别每次移动是哪个手指。下图是显示结果:

734-001

Android中TouchEvent触摸事件机制

当我们的手指在Android屏幕上点击或滑动时,就会触发触摸事件TouchEvent。在App中ViewGroup和View存在多级嵌套,在最外层的是Activity,最内层的View,介于Activ...
  • sunqunsunqun
  • sunqunsunqun
  • 2015年12月20日 16:28
  • 10585

Cocos2d-x 3.0 新特性体验(3)触摸事件处理机制

在cocos2d-x 2.x版本中,相信大家都抱怨过其中的触摸机制;在3.0版本中,采用了全新的触摸事件处理机制。 在官方的文档中:点击打开链接  这篇文章有对新的事件分发机制的介绍。 下面,我将通过...
  • Crayon_DyS
  • Crayon_DyS
  • 2014年01月26日 17:47
  • 16492

触摸事件的分析与总结----TouchEvent处理机制

Android中的事件类型分为按键事件和屏幕触摸事件。TouchEvent是屏幕触摸事件的基础事件,要深入了解屏幕触摸事件的处理机制,就必须掌握TouchEvent在整个触摸事件中的转移和处理过程。此...
  • zf1991719
  • zf1991719
  • 2014年12月02日 21:17
  • 1487

iOS个人整理08-touch触摸事件和手势识别器

一、touch触摸事件 在给定的触摸阶段,如果发生触摸事件,应用程序就会发送下列消息 //触屏开始 -(void)touchesBegan:(NSSet *)touches withEvent:(U...
  • u010330109
  • u010330109
  • 2016年01月13日 15:15
  • 1192

[js点击]JavaScript之原生触摸事件详解01

AJAX 浏览器与服务器之间,采用HTTP协议通信。用户在浏览器地址栏键入一个网址,或者通过网页表单向服务器提交内容,这时浏览器就会向服务器发出HTTP请求。1999年,微软公司发布IE浏览器5.0版...
  • BaiHuaXiu123
  • BaiHuaXiu123
  • 2016年11月20日 20:19
  • 4270

jQueryMobile的(十八) 触摸事件(touch)

在 jQuery Mobile 中有一些触摸事件是可定制的。然而,这些事件仅当与支持触摸功能的设备进行交互的用户访问您的 jQuery Mobile 网站时才可用。当这些事件可用时,您可以触发任何自定...
  • bao990423420
  • bao990423420
  • 2013年11月04日 09:50
  • 4294

quick-cocos2d-x游戏开发【10】——触摸捕获事件 cc.NODE_TOUCH_CAPTURE_EVENT

如果看过sample中touch的代码,你会发现示例中有一个cc.NODE_TOUCH_CAPTURE_EVENT事件,它和cc.NODE_TOUCH_EVENT触摸事件一样,是引擎级别的事件,我们来...
  • w337198302
  • w337198302
  • 2014年08月29日 12:00
  • 5492

【cocos2d-x 3.5】Lua触摸事件

local listenner = cc.EventListenerTouchOneByOne:create() listenner:registerScriptHandler(function(to...
  • slow_liao
  • slow_liao
  • 2015年05月03日 00:41
  • 2921

Linux下如何模拟touch事件?

试验一: Device:Beagle Board System:Android GingerBread2.3.4 首先找出单击左键对应的events,将Beagle Board通过串...
  • tomxue0126
  • tomxue0126
  • 2012年10月02日 12:42
  • 2534

cocos2dx 3.x 屏幕触摸事件的认识

1. 屏幕触摸事件
  • lengxue789
  • lengxue789
  • 2014年07月30日 13:12
  • 26549
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:#734 – 在触摸事件中识别不同的手指(Recognizing Different Fingers in Touch Event Handlers)
举报原因:
原因补充:

(最多只允许输入30个字)