鼠标手势(Mouse Gesture)的C#实现源代码

本文介绍了一种鼠标手势的C#实现,通过捕获鼠标轨迹并计算方向与预定义手势对比,实现类似浏览器中关闭标签、后退等功能。文章提到了弧度向量表的构建、Levenshtein算法在比较手势数据中的应用,并提供了包含鼠标手势库和示例应用的源代码下载链接。
摘要由CSDN通过智能技术生成

再来一篇实例讲解(PS:该篇实例改编自Flash AS当中的一个鼠标手势库,具体出处我忘记了,这代码写的有点久了,好像2008年左右写的)。

 

鼠标手势是一个种比较好玩的东西,其应用并不算很广泛,但是研究起来相当好玩。在遨游浏览器当中,你可以看到鼠标手势的应用,例如你按住鼠标右键,然后画一个L,可以关闭当前的标签,从右向左画一横,可以后退,FireFox当中也支持鼠标手势。还有一些游戏中也用到了该技术,例如《三位一体》,还有NDS上的《恶魔城》等等。当然,手写输入发也算是一种鼠标手势,不过其实现方式不知道与我下面将的是否相同,这个没有研究过。

 


其实鼠标手势玩的就是算法,建立弧度向量表,根据鼠标轨迹的点计算方向,然后与预定义的鼠标手势进行对比,取出最相似的一组。这几个步骤当中都要用到不同的算法。

 

首先是弧度向量表,以八个方向的向量划分弧度,并按一定的精度建立一个弧度向量表,用0-7表示8个方向,-1表示“.”。如下图所示:

 

方向向量示意图

 

此时,我们就可以根据这个方向建立手势数据了,例如:

A可以表示为71

B可以表示为260123401234

I可以表示为2(与1没有区分开,程序带中的代码也是如此,如果需要区分开,可以用6表

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
名称:MouseGesture鼠标手势) 版本:1.0.0.2 大小:4904K 语言:简体中文 授权:免费软件 平台:Win8/Win7/Vista/Win2003/WinXP 简介: MouseGesture是一款Window系统辅助工具,可用于方便、快速、高效的管理所有窗口。您可以简单地通过不同手势实现关闭、最小化、最大化、全部最小化、还原窗口、左移窗口和右移窗口的功能。 ------------------------------------------------------------------------------------------------- Introduction ------------------------------------------------------------------------------------------------- Welcome to the MouseGesture readme file. MouseGesture is a free tool that assist you to operate windows more quickly and effectively.With MouseGesture you can close, minimize, maximize, restore, left-move, right-move and minimize-all the windows just with your mouse moving. ------------------------------------------------------------------------------------------------------ What's new in MouseGesture 1.0.0.2 ? ------------------------------------------------------------------------------------------------------ * Optimized algorithms and operate more quickly * More accurate when judging the window * Add two browsers on which MouseGesture disable itself * Support for Windows 8 ------------------------------------------------------------------------------------------------- Features ------------------------------------------------------------------------------------------------- 1. Seven mouse-gesture actions associated with windows (Moving with RButton down) * Close a window (down-right) * minimize a window (down) * minimize all windows (down-left) * maximize a window (up) * restore a window (left-down) * left-move a window (left) * right-move a window (right) 2. Providing a using guide application for freshers 3. Enable you change the theme color as you like 4. Automatic launched with systems 5. Enable you shutdown MouseGesture temporarily if you need 6. Disable MouseGesture dynamically while you are surfing the Internet on web browser with it's own mousegestures. So far, 6 web browsers are in it. That is, Sougou explorer, QQBrowser, TheWorld, Maxthon and Opera.
VB实现鼠标手势,根据移动鼠标的方向让程序作出某种反应。我的实现思路:   鼠标移动,如果把这些点都用直线连起来,就会形成一条轨迹线,鼠标手势就和现实生活中的打手势是一样的,   只要分析鼠标的轨迹符合某种规律就完成设定的某些操作。如何去分析一条轨迹线呢,一次鼠标移动的点是非常多的,而且精度也是相差深远,所以我实现的是比较简单的鼠标手势。   我的思路是这样的:鼠标的水平移动方向只有两种情况左和右,垂直方向也只有两种情况上和下,当鼠标的移动   幅度大于10个像素(水平x或垂直y坐标和旧的坐标点相减的绝对值大于或等于10),则捕获这个点,分析和上一次捕获的坐标点的相对位置,如果x坐标的差值小于0则水平方向是向左移动(其他方向一样),由于每次鼠标移动的轨迹都不会很精确,所以我设定的是如果差值小于3个像素点,则认为是0没有移动,我现在分析这两个点,如果水平方向是向左移动,则记录为L,向右则记录为R,如果没有移动则记录为0,垂直方向是一样的,如果向上则记录为U,向下则记录为D,没有移动则记录为0。现在我可以用一个长度为2的字符串记录下这个坐标点的情况了,例如:LU表示水平方向是向左移动,垂直方向是向上移动,0D表示水平方向没有移动,垂直方向向下移动,把这个字符串保存到数组或者集合中。当鼠标释放的时候,已经捕捉了非常多的坐标点,我是比较简单的鼠标手势,精度要求也不高,所以我从这所有坐标点中只取四个点作分析,怎么取这四个点呢?假设变量nPos为坐标点的个数除以四,表示平均的间隔个数,第一个点取第一个,第二个点取第nPos个,第三个取第nPos*2个,第四个点取最后一个。   现在是分析这四个坐标点的时候了,把这四个坐标点连成一个字符串。以下是可能出现的情况:   R0R0R0:R0表示水平方向向右移动,垂直方向没有移动,四个都是R0,表示轨迹向右;   0U0U0U:0U表示水平方向没有移动,垂直方向向上移动,四个都是0U,表示轨迹向上;   R*U*L*D:这个表示向右移动再向上移动,再向左移动,再向下移动,可以认为是逆时针画圈,当然精度不是很高   但是足够用了(如果你要求不是很高)。   至于其他点,可以用同样的思想去分析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值