WM电阻屏也玩多点触控—Multi 2.0原创首发| Mobile 2.0
主页 » Win Phone,其它应用,原创软件 » WM电阻屏也玩多点触控—Multi 2.0原创首发

WM电阻屏也玩多点触控—Multi 2.0原创首发

作者: | 发表于2010-06-07 | 13人发言

  N久前WM发烧友也许会关注到一件事情:XDA上有人开发出了电阻屏上的多点触控SDK,详细视频如下:

  看到这个消息后,大家也许充满着欣喜和期待。但相反,我的心情非常沮丧!承受了重大的打击!我早在此之前就已经开发出了实现此功能的软件,一直没有放出,我慢了一步了,不,不止一步……

写在Multi 2.0之前

  我编写的第一个PPC程序叫Multi-touch Simulator(多点触控模拟器),简称MTS。当用一只手指/触控笔触摸,一般没有响应;用两只手指,就能实现图片缩放,至少已经比上面这个视频展示的要好。用VB.NET编写出来,只要40行不够的代码。后来我把这项技术命名为Multigle Touch,Multigle是Muti和Single的合体,直译为半多点半单点触控技术,意译为单点触摸屏上的多点触控技术。

MTS

  后来我在网上看到已有人做出这样的技术,并且多了个图片旋转。有句名言说:“第一个把女人夸作花的是天才;第二个是庸才;第三个是蠢才”。于是我变得无心继续研发它了,转而编写其他程序。当然,我还是有继续编写类似的程序,先后编写了一个仿多点触控的架子鼓软件——Drum it!(没有公开发布过),和一个只做了一点点就没继续的iPocketPhoto——模拟iPhone的相册。

  现在XDA又出了个“庸才”,“蠢才”也不比第四个什么都不是的差了!~

Multi 2.0 Now Realsed!

  抱歉,这篇文章也许让你一头雾水,至少现在你还不知道Multi 2.0是什么。

Multi 2.0是一个Windows Mobile绿色软件,在WM电阻屏上实现多点触控,支持WM6.1、WM6.5系统,QVGA、WVGA屏幕。

  它用了我约半个月编写,但拖着拖着大概花了一个多月才正式完工。

作用:展示在电阻屏上实现的多点触控效果及实现方法(目前只是两点触控)。
硬件需求:电阻屏(屏幕不能多点触控,如:不能是HTC HD2)

  为什么叫Multi 2.0?

1.与Mobile 2.0相近
2.目前只实现两点触控
3.注意:2.0不是版本号..在这之前并没有Multi 1.x

软件界面及实现功能详解

UI是模仿Android系统的:

上方是4个选项卡(模拟Android的电话功能上方的选项卡,但只有文字没有图标);
左下角是触控点的实时坐标数据(X是从屏幕左边为0算起的横坐标,Y是从屏幕上方为0算起的纵坐标);
右下角是一个退出键(Android风格的Button..嗯.我厌倦了WM方方正正的四边形框)。

图片页功能+详解

实现功能:单点触控移动图片,两点触控缩放图片。

起始界面

  试试用触控笔或一只手指移动一下屏幕中的图片吧。再试试图片缩放:

先按下一个点,再按另一个点,两点的间距最好有2cm。
第一个按下的点固定不动,移动第二个点来进行图片缩放(后面解释原因)。拉长距离为放大,缩短距离为缩小。
注:不能同时按下两个点,必须后先后按下的时间差,即使时间差很小,小得发觉不了。

手柄页功能+详解

实现功能:最多同时按两个键的屏幕游戏手柄。

屏幕手柄

  不要横屏,屏幕手柄已是横屏效果。试试按下任意一个键,左边是方向键,右边是一般手柄的A\B键。然后试试两只手指?一边按方向键,一边按A\B键。

GamePadShot

  当然,上面这张图片只是演示。你无需一边用手指,一边用触控笔,完全可以两只手畅快体验(最好用指甲点击,手指头的触感不稳定)。你甚至可以同时按下左右键,但还没有事例证明这有什么用途。

注意:同样,你按下的第一个键不能移动,但你按的第二个键可以任意移动。比如:

你按下了左方向键,再按下右边的上方的键。
你可以任意移动右边的手指,来切换右边上下方的键。
你也可以先按右边的键,再按左边方向键。
这样,你就可以任意移动方向键了。

这样的触控感不好?不同的是:

你先按下左方向键,再按下右边的键。暂且你只能切换右边的键。
当你松开左方向键,按下的键只有右边的了,
再按回方向键,注意,你可以任意移动方向键了!
也就是说:此时右边的键已变为第一个按下的键,不能移动的是右边的键。
这样,可以说,从按下屏幕触发事件起,到手指完全脱离屏幕之前,
你可以任意移动方向键和A\B键。

揭示页功能+详解

实现功能:以图形界面显示程序内部运算机制。

  嗯,电阻屏只接受一个触控点,它绝不贪心。那么,当屏幕上同时点击了多个点,它会接受哪个点呢?第一个按下的点?最后一个按下的点?

  不,你按下的多个点会形成一条线段或以各个点为顶点的多边形,而WM会完美的找出所形成线段或多边形的中点,这个中点就是唯一被有效识别的触控点。于是,只要记下第一个固定的触控点坐标,再计算出固定触控点到真正被识别的触控点的位移,乘上两个这段位移就到达第二个触控点的位置了。

  看回软件的“揭示”功能页,当你按下一个点,再按第二个点,屏幕上会出现三个点:

FactShot

固定触控点就是你按下的第一个点;
实际触控点就是此时硬件真正识别到的触控点;
虚拟触控点就是程序计算出你按下的第二个点。

偏差说明

  虚拟触控点也许会与你真正按下的第二点有偏差,并且两点间距离越大,不在同一X轴或Y轴,偏差将越大。我把这点偏差初步定义为硬件上的问题,是屏幕上的不平滑使得两个点按下时,硬件不能完美地识别出中点。因此,大家若要买新的电阻屏WM机器,可以用Multi 2.0这个功能来检测屏幕的平滑度,一方面看看屏幕的完美程度,另一方面来实现更好的多点触控效果(若你有这个需求)。当然,这个平滑度并不影响单点触控的效果!除非你的手指大到覆盖了较大面积的区域,并且屏幕的平滑度suck(糟糕)至极。这时你可能要为你的手指单点触控担忧。

伪多点不好?

  也许你会反对:按下的第一个点不能动,只移动第二个点,这和单点触控没什么区别。
  答:这个说法是片面的。

“按下的第一个点不能动,只移动第二个点”是正确的,但“没什么区别”就是错误的。(受应试教育政治辨析题基本套路影响)。首先,在“图片”演示上,确实是在没有按下任何设置等额外操作的情况下,通过一只手指、两只手指来实现图片移动和图片缩放的切换。其次,在“手柄”演示上,确实是实现同时按下两个按键,这给电阻屏触屏游戏带来了极大的便利!

关于

  最后这个页面,软件上也没什么好讲了。

AboutShot

  首先,欢迎多来Mobile 2.0看看!其次,自我介绍一下,偶是Tango,关于一些建议、意见可以在本文章发表评论,也可以发到我的邮箱:tan9ochen@gmail.com,没事顺便踩一下空间:390539167.qzone.qq.com(最近不好意思在发表这篇文章前发表空间日志)。

  我在2010/3/20就已经正式加入Mobile 2.0,这是我在Mobile 2.0内部白混了两个多月左右才逼出的第一篇文章,当然这不是M2组员逼的:)

[花絮:文章开头的三个字由起初开始编辑的"不久前"改为现在的"N久前"..]

  使我不堪重负的应试教育一次次阻断了我的创新与发展,这是我在忙里偷闲弄出来的。大家要多关注中国的教育现状!随时倡响中国的教育改革!!教改尚未开始,同学们须努力!!![偏题式地结束了..]

本软件下载:
Multi2.0(QVGA)
Multi2.0(WVGA)
[请用PC或PPC上的7-zip解压文件]

[poll id="61"]


现有13条评论

  1. 逐梦 说到:

    伪双点到真双点还有很长的路走,算法谁都能想到,不过就是实现有一些困难,所以,顶了,希望写出更好的系统增强软件,还有就是如果可以的话,顺便编译一个android下的Multi2.0的apk供电阻单点android机油用,这个,可以做收费的,很不错!!!

    回复

  2. 灰大郎 说到:

    我觉得这算法很简单的,,只不过是多点触控有点挑战

    回复

  3. RockingChee 说到:

    如果我说这样的想法我也有,只是没有去实现您愿意接受吗?哈哈。小的认为这种算法最大的问题在于第一个点的移动所带来的影响。即然如此,小的觉得可以想办法弱化它。放大按钮,让两个按钮间的中点维一确定,或者直接把这种算法用于别的功能,比如,在屏幕上加一块键盘什么的…发表一些浅薄的想法,见笑了。

    回复

  4. 匿名 说到:

    很支持这个技术,首先我不了解硬件对触点发出的信息是什么样的结构,但是如果可以的话,是否可以做到每1秒扫描,把上一秒的位置数据作为死坐标点,以刷新另一个位置的点,这样活动触点就能切换以实现2个点都能识别,这个的前提是硬件能回馈足够的信息,

    回复

  5. 匿名 说到:

    路过,顶一吧,支持技术嘛,
    不过电容屏还是好一点。

    回复

  6. 匿名 说到:

    关键是看怎么能够应用到各种软件上面
    只是出来一个演示的软件 的确是没有什么太大的作用……

    回复

  7. 匿名 说到:

    其实真的没有什么用处。想让软件里面支持这种东西难之又难。而且无法真正的正确判断两点位置。同一个中点的两个点的所有位置都无法正确判断。

    回复

    Tango Reply:

    首先.不知道你操作有没有误.第一个按下的点是不能动的.
    其次.上文讲了.当两点在屏幕的对角线时.位置会偏移更大.
    最后.两点触控本来就不是电阻屏所能做的.
    这只是破例让它满足一下我们试图突破的心理.
    就像我们会渴望新的XX手机能有XX功能一样.
    PS.这只是个演示软件.真正有价值的应用还没出来.
    我已经有几个想法了.只是时间的问题.

    回复

  8. 木头 说到:

    非常厉害…我觉得你应该早点放出来,你是C++还是C#啊?要是能开源就好了…
    不过我猜测,LZ是不是只是模拟出来的,就是只是记住了一个点的坐标,另一个点才是实际的点啊?
    我是C#的程序员,有空交流一下,嘻嘻…

    回复

  9. 匿名 说到:

    话说没有软件配套,感觉多点只是看看新鲜。。。

    回复

    Tango Reply:

    你指的是什么软件..是Multi 2.0还是相关应用的软件?
    注意.Multi 2.0软件下载在最后的投票上方“

    回复

  10. 手机网站建设 说到:

    不错,准备收录着软件

    回复

  11. coolxll 说到:

    文章太技术了,看不懂了,一头雾水,顶原创软件吧

    回复

我的看法

 

以下所有信息都可选填