windows7系统触摸功能介绍
番茄系统家园 · 2021-08-25 08:50:27

只要有触摸设备,你用双指在触摸屏上也可以操作系统。双指触控如缩放、双指放大、双指翻页等特效都可以在Win7中实现。
常用的两种手势
1.缩放手势
缩放手势用于界面放大或缩小在浏览图片、文章阅读等程序中常常会用到。双指缩放的手势如图1所示双指并拢置于窗体中一指向上滑动一指向下滑动这是放大双指分开置于窗体上两指向中间滑动则是缩小。
程序要识别出这个手势第一步要得到手指点到屏幕的消息。第二步根据两指的坐标计算出距离根据一个经验值对两指距离进行比较来得到这是两指分开或两指并拢。第三步可以根据一个定时器来实时捕捉手指点的坐标来计算出移动方向及速率进一步就可判断出两指是反向滑动还是相向滑动。
2.平移手势
平移手势往往用于导航。例如在一个图片查看程序中使用向左平移手势可以导航到上一张使用向右平移手势导航到下一张图片。平移手势如图2所示双指同时向左滑动或向右滑动。如何区分用户是要改变图片的位置还是翻页呢这里必须使用到加速度。
可以在一个定时器中实时捕捉手指坐标计算出速率和加速度可以通过一个经验值去和加速度比较当加速度比较大的时候可以认为是翻页反之则是拖动。当然这还不够当拖动时还需要进一步判断是否到达程序边界如果到达边界也认为是翻页。对于翻页的处理向左快速移动或到达左边界则认为是上一页。
双指触控API揭秘
双指触控的核心是把原始触摸数据放入运动模型中去计算以识别出用户的手势。原始触摸数据可以从消息中得到。通过识别出缩放和平移手势。
第一步检查多点触控硬件
这里使用 API来获取硬件是不是就绪
;{ //没检测到多点触控设备或设备没有就绪}//检查设备支持几个触摸点需要注意的是目前Win7对2个触摸点支持得比较好;
第二步切换到原始触摸消息
在默认情况下Win7默认提供手势消息。这个手势是系统根据原始触摸数据来识别的手势使用函数可让系统返回WM_TOUCH原始触摸输入消息核心代码
RegisterTouchWindowhWnd0//hwnd为当前窗口的句柄。第三步得到原始触摸数据
使用GetTouchInputInfoAPI得到原始触摸数据核心代码
GetTouchInputInfoHTOUCHINPUTlParamnumInputstisizeofTOUCHINPUT
numInputs为预先声明的变量用于存储有几个触摸点如果是5个手指同时在屏幕滑动那么numInputs就为5。
ti是TOUCHINPUT结构其包含了触点的X和Y坐标、发生时间、触摸类型类似于鼠标按下、鼠标移动、鼠标释放等。
forunsignedintii ifti[i].dwFlagsTOUCHEVENTF_DOWN{ OnTouchDownHandlerhWndti[i];//交给触点按下函数处理}elseifti[i].dwFlagsTOUCHEVENTF_MOVE{ OnTouchMoveHandlerhWndti[i];//交给触点移动函数处理}elseifti[i].dwFlagsTOUCHEVENTF_UP{ OnTouchUpHandlerhWndti[i];}//交给触点释放函数处理}
这里的触点按下、移动、释放等函数实际上是一个运动仿真模型我们在模型中要将触点的轨迹生成若干条运动曲线并计算出每个点的方位角、速率、法向加速度、切向加速度等以识别出具体的手势。
小知识让程序支持多点触控最简单的方法是用Win7的手势识别功能主要用到以下API
GetSystemMetrics用于检查多点触控硬件设备是否存在并就绪。
GetGestureInfo用于获取手势类型及相关数据。
免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/post/47274.html。
