none
WPF 触摸屏程序怎么判断是手指还是手背?? RRS feed

  • 问题

  • WPF 触摸屏程序怎么判断是手指还是手背??

    想实现一个功能,就是多个手指触摸的时候是在Inkcanvas上面书写涂鸦,而用手背去触摸的时候就变成擦除Inkcanvas上面的笔迹。。。

    怎么判断是手指触摸,还是手背触摸呢??

    一个办法是先计算各个点的坐标围成的面积,如果面积大于一个临界值就是手指触摸,小于就是手背触摸。。可效果不是很好啊??有什么办法呢??

    2015年1月5日 7:05

全部回复

  • 你好,Heller,

    从您的描述来看, 你似乎想要实现一个画板, 涉及到多点触控.

    事实上我认为手背触摸作为擦除手势是不太合理的, 因为现有触控屏大多以点作为触控操作的基本单位, 这就从硬件上限制了对手背触摸操作的识别.

    至于您提到的通过面积来识别手背, 这种方法很容易导致手势冲突, 因为不同的人的手背是不一样的, 您无法预知手背触摸屏幕时形成的点集是什么样的结构, 这些结构也并不一定形成稳定的有面积的图形. 如果尽可能多地将一些点集结构识别为手背操作, 又会使得手指操作过程较容易发生误操作.

    考虑到画板的功能, 我会采用三种方案:

    1.将画板划分为两个状态: 编程状态和操作状态.

    通过不易冲突的特殊手势切换状态(如五指双击或两指三击), 在画板中进行状态切换提示.

    在编辑状态下, 所有手指的触摸都将识别为墨迹.

    在操作状态下, 单指触摸识别为擦除, 两指触摸识别为缩放/移动/旋转, 四指下划识别为清空墨迹.

    2.设置按钮, 切换当前工具是触笔还是橡皮.

    3.设计其他手势, 如:

    五指(四三指亦可)按下且不动时画板出现红色边框, 此时新的手指按下且移动时识别为擦除, 最初五指移动或离开时离开当前状态.

    三指捏紧(小于一定面积)"同时"按下后移动识别为擦除.

    您的想法非常好, 如果实现的话, 将使得触摸屏绘画体验大大提高. 不过很可惜, 据我所知现有通用触摸设备要实现这样的功能还是比较困难的.

    2015年1月6日 2:03
  • Hi all,

    手背可能确实无法识别的,区别太小,不过有个蛮有趣的API是关于角度的,就是有一个特别的设备可以识别你的手摆放角度,发出来share给大家参考:

    http://thedarksideof.net/post/Hands-on-Perceptive-Pixel-by-Microsoft.aspx



    Barry
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年1月6日 8:40
    版主