octobre
2008
![Author](https://blog.developpez.com/lgmorand/wp-content/themes/alltuts/images/ico_author.png)
![Comments](https://blog.developpez.com/lgmorand/wp-content/themes/alltuts/images/ico_comments.png)
Qui n’a pas vu les différentes vidéos de présentation de Surface? Vous savez, la dernière technologie multi-touch de Microsoft qui devrait être intégrée directement dans Windows 7.
Voici un exemple: http://www.youtube.com/watch?v=rP5y7yp06n0
Sachez que le développement se fait à l’aide de WPF et semble être extra simple (selon les vidéos disponibles sur le netn je vous laisse chercher). Le SDK sera bientôt disponible mais néanmoins pour tester l’application sur une table Surface, il faudra dépenser 10 000$. Sinon, il faudra vous contenter du simulateur compris au sein du SDK
Nous allons donc voir dans cette session si nos attentes sont confirmées.
Microsoft Surface utilise les technologies d’affichage et les surface tactiles pour pour interagir avec l’utilisateur. Sa différence vient tout d’abord de l’interaction directe avec l’utilisateur (très rapide), vient ensuite le multi-touch, permettant d’utiliser plusieurs doigts ou points d’applis sur la surface.
Mais Surface, c’est aussi et surtout le multi-utilisateurs, permettant à plusieurs utilisateurs d’agir au même moment sur la même application. Enfin, la table surface est capable de reconnaitre les objets. C’est un peu obscur mais ici, nous avons pu avoir chacun une carte (type carte de crédit) qu’on déposait sur les tables et la surface interagissait avec la carte, lisant les informations, en stockant certaines, et permettant de mémoriser les informations. Nous devions ainsi déposer notre carte sur toutes les tables de la PDC (une bonne dizaine) et sur chaque table, nous devions déplacer certaines images en relation avec notre carte. C’est peu clair mais l’idée était intéressante.
Microsoft Surface, avec son SDK, permet de zoomer facilement en écartant deux points d’appui sur un même objet (un peu comme l’Iphone) permet de tourner les objets, les déplacer avec de l’élan. le fait de faire glisser violemment un objet contre une bordure donne même un effet de rebond contre la bordure. Une sorte de moteur physique semble tout calculer en arrière plan.
Avant que je continue sur le code de Surface, voici le lien vers le site officiel de Surface: http://www.surface.com/
Techniquement, la surface semble faite d’une surface tactile multi-touch mais aussi d’une camera cachée qui permet de voir et lire le visuel des objets placés sur la surface et avant une grand qualité de détails
Archi de Surface
- Surface applications
- Shell ui et API WPF et Core API
- windows Integration
- Windows Vista SP1
- Microsoft Surface Hardware et drivers
Nous avons donc un matériel dédié, utilisé à travers Vista via l’integration, et les applications Surface utilisent les APIs du SDK pour agir avec le matériel.
Utisation de Surface avec WPF
voici une vidéo qui montre comment en 1minute 52, on peut créer de zéro une application tactile gérant un nombre non défini d’images.
Ce genre de bout de code d’une ligne pour Surface était déjà trouvable dans une vidéo de présentation de Microsoft sur Surface et ne m’avait pas spécialement convaincu mais par contre, il en est allé tout autrement pour la suite.
La grosse différence qu’a Surface par rapport à d’autres technologies Multi-Touch, c’est la reconnaissance d’objet. Cette fois, il s’agit même pas de notion de puce RFID ou autre, c’est simplement un code barre qui permet de remplir la tâche que l’on souhaite voir s’éxecuter.
Surface permet de retenir deux types de « code barre » qui sont en fait des « codes points »
Nous avons les ByteTags Contact.Byte.Tag, permettent de stocker une valeur utilisant de 0 à 256 bits
et les IdentityTags Contact.Tag.Identity qui lui permet de stocker une valeur allant de 0 à 340 282 366 920 938 000 000 000 000 000 000 000 000 bits(le nombre est véridique!!!)
Ces deux codes barres sont à utiliser avec un contrôle dédié: le TagVisualizer qui permet plusieurs choses:
– la reconnaissance de l’objet
– d’afficher un objet/image sous, autour ou à côté de l’objet qui a été posé sur la surface
– de synchroniser le déplacement de l’objet avec les éléments qui lui sont accrochés
– de gérer quand l’objet est juste soulevé de la table Surface
bonus: Vidéo: http://www.youtube.com/watch?v=LR6q5M-Ss6A
C’est bien tout ca, mais comment on code?
Et bien c’est tout simplement du WPF adapté. Le principe de Surface est de pouvoir prendre une application WPF (ou XNA), de changer deux trois balises par leur équivalent surface et de compiler l’application.
Exemple:
<ListBox ../> deviendrait <s:ListBox..> où « s » est le namespace que l’on aura enregistré dans le XML. Ce namespace étant tout simplement Microsoft.Surface. Ainsi vous retrouverez les Listbox, Menu, TreeView, etc.
Il existera bien sûr d’autres composants tels le SurfaceInkCanvas qui permet de peindre sur la table Surface avec les droits, ou encore le ScatterView, objet qui sert de panel à placer des objets. Vous placez un ScatterView dans votre application, vous remplissez sa dataSource avec un DataBinding basique et il se charge de charger les objets et de les afficher. Vous pouvez alors ensuite interagir avec les objets (bouger, agrandir, jeter, tourner) et tout ceci ne prend qu’une seule ligne de code.
Voici la vidéo qui montre comment créer l’application en moins de deux minutes: http://www.youtube.com/watch?v=H2rLXbmeIwQ
Vous pouvez bien sûr définir plein de paramètres sur les objets comme l’activation de la rotation, l’agrandissement ou encore la décélération.
<Style TagerType="{x:Type s:ScatterViewItem}">
<Setter Property="CanRotate"
Value="{Binding ElementName=rotateCheckBox, Path=checked}"/>
</Style>
</s:ScatterView.ItemContainerStyle>
Le code précédent configure le fait que la rotation des objets pourra être activer ou désactiver en live via une checkbox que l’on aura placé quelque part sur l’interface. Pour avoir pu jouer avec, je peux vous affirmer que les utilisateurs adoreront utiliser ce genre d’application
Si vous voulez jouer avec une table Surface, oubliez! Vous devez aller sur le site officiel, remplir un formulaire spécial et payer. Mais surtout, Surface, n’est que pour un usage commercial. Un geek riche souhaitant s’amuser n’a pas le droit de l’acheter. Rappel: www.surface.com
Je pensais que Surface était vite limité mais les exemples d’applications qu’ils nous ont montré nous ont laissé sur les fesses. Surface est clairement une technologie du future qui fera sa place, j’en suis convaincu car :
– c’est une technologie déjà prête (simplement un peu chère pour le moment)
– multi-utilisateurs
– multi-touch
– interface à 360°
– gestion des gestes et mouvements
– moteur physique
– qui peut interagir avec les objets extérieurs
– qui possède un design UI qui requiert créativité et innovation
– le coding se fait à partir de ce que vous savez déjà, à savoir WPF