Win 7 - Multi Touch
In my earlier blog I had touched upon some high level concepts on touch support for applications, that is now available with Windows 7. In this I will spend some time on multi-touch and few other points around support as part of .NET and on Surface.
So when we say multi-touch, what does it really mean? This is also where the basic touch to mouse promotion and real multi-touch differ. Multi-touch means the ability to detect multiple touch points at the same time on the touch hardware and be able to program against each of them independently. In a mouse driven world, there is single point of click and hence controls really respond one at a time. With multi-touch however we now are capable of programming against multiple controls at the same time. While most multi-touch samples/demos show usage of multiple fingers, what you should realize is that it is now capable of supporting multiple people interaction. A behavior, which MS Surface, demonstrated very well.
In my earlier blog I talked about points around WM_TOUCH and WM_GESTURE. An important addition over this in WPF 4.0 is the manipulation events. These essentially help in performing pan, zoom and rotate type of behaviors. The manipulation events are fired if the control requests for the same by setting its IsManipulationEnabled property to true. Programmatically you then typically handle the delta manipulation events and manage the transforms on the specific control. These will be scale transform for zoom, translate transform for panning and rotation transform for rotate. Check here for some details and samples on these concepts.
In the PDC 2009, MS also talked about how Surface controls and WPF controls are headed for common underlying code for supporting all these kind of behaviors. Few months back in one of our discussions around future of Surface we were talking about common issues people are facing with Surface and the 3 prominent ones were
- Cost of surface table
- Surface is horizontal while most apps would prefer a vertical display
- Restrictions on access to Surface SDK
It is really interesting to note that MS is addressing all of these and you might want to check the announcements made during PDC. See this video.
While all this is definitely interesting and exciting, to me this also very much seems like the Gartner Hype cycle (Also see here). As the technology innovations are happening, in the initial days/months, there will be a tendency to try this out for just about any application. There, however will be challenges and some of points listed by Bill Buxton in his blog here highlight them. I personally like the statement he makes
"if the finger was the ultimate device, why didn’t Picasso and Rembrandt restrict themselves to finger painting?"
This very clearly brings out an aspect that there will always be specialized devices and not all can be replaced by touch and natural gestures just because they are most efficient to use. Another simple example will be the speed of typing vs. the speed of writing and hence any application that uses text input even in moderate sense, will continue to require keyboards. The keyboards may become online/virtual, but that does impacts the real estate available to put other application specific items.
Finally, I still do believe that innovations will keep happening and we will definitely see more and more touch hardware and such applications.