[MS Surface] 关于程序如何在non-Surface的multi-Touch设备上运行和使用
MS Surface SDK 是基于WPF的NUI开发环境,在用户界面的开发方面有很大的优势,不过一台Surface table对于普通开发者来说实在是有点贵,如果可以在一些普通的HID(Human Interface Device)触控屏幕上使用就能节约很多银子了。
1. 没有触控屏幕只有鼠标的时候
听我导师说可以装两个鼠标用,不过感觉难受,还好微软有配套的Input Simulator,可以用这个模拟各种输入,甚至条形码(Surface的一大特色就是对物理物体的识别)。
2. 有触控屏幕的时候
前一段老板买了一批Dell ST2220T,但是后来发现Surface 2.0写出来的程序在这个屏幕上不能识别触控操作,后来发现别人1.5 SDK写出来的居然可以用,才开始去找解决方案。
解决方法:Touchtech Surface Community Edition
拷贝这两个文件到project文件夹下,然后VS中add existing project -> 分别添加这两个project到自己的项目中
之后将两个project加入references
在主窗口中添加
xmlns:ts="http://schemas.touchtech.se/surface/2011"
并将主窗口的 s:SurfaceWindow修改为 ts:OptimizedSurfaceWindow, 具体如下:
之后打开App.xaml.cs,在class App 中添加如下代码,记得添加using Touchtech.Surface;
protected override void OnStartup(StartupEventArgs e) { // Suppress Surface Input if running on Surface hardware SurfaceEnvironmentHelper.TrySuppressSurfaceInputOnNonSurfaceHardware(); base.OnStartup(e); }
最后在SurfaceWindow.cs中
将SurfaceWindow class的base class修改为OptimizedSurfaceWindow,添加 using Touchtech.Surface.Presentation.Controls; using Touchtech.Surface;
public partial class SurfaceWindow1 : OptimizedSurfaceWindow
现在模板就已经建好了,现在就可以按照往常的方式写代码的,编译出的程序可以在普通touch屏幕上正常使用,但是由于我这台Dell的最多只支持两个touch point,所以用户体验和Sur40相比还是差了很多。
刚才的模板可以在这里下载:https://skydrive.live.com/redir?resid=71FA911C9B39086F!116