博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF Multi-Touch 开发:基础触屏操作(Raw Touch)
阅读量:6640 次
发布时间:2019-06-25

本文共 2191 字,大约阅读时间需要 7 分钟。

原文

多点触控(Multi-Touch)就是通过与触屏设备的接触达到人与应用程序交互的操作过程。例如,生活中经常使用的触屏手机、触屏笔记本、显示器以及微软最新的Surface 产品等这些都属于触屏操作设备。本篇将介绍如何开发能够支持MT 功能的应用程序。

     在WPF 4 中已经具备的多点触控开发技术,当多个手指触碰到触屏设备时,WPF 会把每跟手指认为是一个触控设备,并为其分配唯一的识别ID,以便跟踪不同手指的操作手势。下面将通过实例演示WPF 所支持的低级别触控操作:触碰(TouchDown)、分离(TouchUp)、移动(TouchMove),它们都是一些最基础的操作模式。

创建项目

     新建项目在XAML中写入如下代码,<Grid>中只添加了<Canvas> 控件,其中包含TouchDown、TouchUp、TouchMove 三个基础触控事件。当手指触碰程序时便会在Canvas 中生成彩色圆圈,圆圈的位置随手指的移动而改变,手指离开触屏的同时圆圈消失。接下来将逐一讲解每个事件所完成的任务。

     TouchDown 事件主要是完成当触碰产生时在<Canvas> 控件中生成彩色圆圈的任务(C#代码如下)。使用Ellipse 创建随机颜色的圆圈,通过GetTouchPoint 方法获取触碰位置点,并调整圆圈在<Canvas> 中的位置。为了跟踪手指移动轨迹,需要将触屏设备ID 及UI 控件存储在集合movingEllipses 中。

private Dictionary
movingEllipses = new Dictionary
();Random rd = new Random();private void touchPad_TouchDown(object sender, TouchEventArgs e){ Ellipse ellipse = new Ellipse(); ellipse.Width = 30; ellipse.Height = 30; ellipse.Stroke = Brushes.White; ellipse.Fill = new SolidColorBrush( Color.FromRgb( (byte)rd.Next(0, 255), (byte)rd.Next(0, 255), (byte)rd.Next(0, 255)) ); TouchPoint touchPoint = e.GetTouchPoint(touchPad); Canvas.SetTop(ellipse, touchPoint.Bounds.Top); Canvas.SetLeft(ellipse, touchPoint.Bounds.Left); movingEllipses[e.TouchDevice.Id] = ellipse; touchPad.Children.Add(ellipse);}

     当手指离开触屏时TouchUp 事件将被触发,首先将触碰设备从movingEllipses 集合中删除不再跟踪手指相关操作,并从<Canvas> 中将彩色圆圈移除。

private void touchPad_TouchUp(object sender, TouchEventArgs e){    Ellipse ellipse = movingEllipses[e.TouchDevice.Id];      touchPad.Children.Remove(ellipse);     movingEllipses.Remove(e.TouchDevice.Id);}

     当手指在触屏上持续移动时TouchMove 事件触发,它来跟踪手指移动轨迹,并重新调整圆圈在<Canvas> 中的位置。

private void touchPad_TouchMove(object sender, TouchEventArgs e){    Ellipse ellipse = movingEllipses[e.TouchDevice.Id];    TouchPoint touchPoint = e.GetTouchPoint(touchPad);    Canvas.SetTop(ellipse, touchPoint.Bounds.Top);    Canvas.SetLeft(ellipse, touchPoint.Bounds.Left);}

程序演示

     至此,一个简单的触控应用程序就完成了编译并运行该程序,用手指触碰屏幕并持续移动看看是否会出现下面视频中的情况(如果没有多点触屏设备)。

 

源码下载

作者:李敬然(Gnie)
出处:
 (http://www.cnblogs.com/gnielee/)
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。
你可能感兴趣的文章
为什么 PHP 和 JavaScript 取整 ((0.1+0.7)*10) 的结果不是 8?
查看>>
禁用开机显示按Ctrl+Alt+Del对话框
查看>>
最简单的TCP网络封包解包
查看>>
结构体与指针
查看>>
IXWebHosting虚拟主机首页优先级设置方法
查看>>
PerformanceCounterCategory 无法加载计数器名称数据,因为从注册表读取的索引
查看>>
chrome查看SSL证书信息
查看>>
VMware Workstation 12 Mac OS 安装
查看>>
校友社交平台无人关注? Graduway新获1270万美元融资!
查看>>
c 语言 输出1 -n位最大整数
查看>>
VMware FT 原理跟介绍
查看>>
团队之美
查看>>
Tomcat 环境变量配置
查看>>
linux shell 将多行转换为一行
查看>>
linux系统配置文件及网络配置
查看>>
老男孩教育每日一题-2017-04-24:命令行打印输出1+2+3+4+...+100=5050
查看>>
iOS内存常见问题与内存检查工具
查看>>
02.fabric的swarm集群布署:容器监控portainer.io
查看>>
MetroIE如何关闭
查看>>
54:mysql修改密码|连接mysql|mysql常用命令
查看>>