WPF est une des briques
du framework .Net 3.0 dont on parle le plus en ce moment, notamment car son
impact dans les futurs développements d’applications Windows sera très
important. Le mot « révolution » est bien souvent employé lorsqu’on
évoque WPF, mais qu’en est-il vraiment ? Que propose WPF ? Quel
impact aura WPF sur la conception et le développement de nos futures
applications ? C’est ce à quoi nous allons tenter de répondre dans cet
article.
Qu’est-ce que WPF ?
Pour commencer, WPF signifie Windows Presentation Foundation. WPF c’est
en quelque sorte le successeur de GDI, le composant Windows responsable de la
gestion des interfaces graphiques. Mais
WPF englobe bien plus de choses que GDI. En effet, il prend en charge
l'ensemble des interfaces utilisateur, ainsi que les interactions entre
l'utilisateur et la machine. Cela comprend donc tant le graphisme 2D et 3D,
que les interfaces audio (dont la reconnaissance et la synthèse vocale), vidéo,
et les fonctionnalités multimédias (MCI). De fait, ce qui était jusqu’alors
séparé en plusieurs composants se voit aujourd’hui réuni et géré par un même
sous-système : WPF.
WPF est bien évidemment utilisé (et
donc préinstallé) dans Windows Vista, le dernier système d’exploitation de
Microsoft. Cependant il est également possible de l’installer et de l’utiliser
(c'est-à-dire faire tourner des applications qui utilisent WPF) sous Windows XP
SP2 et Windows Server 2003. Pour cela il suffit tout simplement d’installer le
framework .Net 3.0 sur la machine concernée.
WPF en détail.
Nous allons maintenant étudier
plus en détail ce qu’apporte WPF et ce qui change dans la manière de développer
une application.
XAML
Une grosse nouveauté concerne la conception des interfaces
graphiques. En effet, WPF utilise le XAML (eXtensible Application Markup
Language), un langage conforme XML, pour décrire ce qui compose l’interface, et
comment elle est composée/agencée.
Prenons un exemple très simple qui vous permettra rapidement
de comprendre la philosophie XAML : Nous allons décrire une interface
composée d’une fenêtre qui contient un bouton. Le code XAML répondant au
problème est le suivant :
<Window
Xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Button>Hello,
XAML!</Button>
</Window>
Ce document XAML est en fait une définition que WPF va traduire en classes
puis les instancier afin d’obtenir l’interface décrite :

Les « Controls »
Les controls en anglais correspondent à tous ces composants qui constituent
l’interface et avec lesquels l’utilisateur peut interagir. WPF reprend bien
évidemment tous les controls auxquels nous sommes habitués comme les boutons,
les checkbox et autres radio-boutons en passant par les listbox, canvas,
scrollbar, viewbox, documentviewer et bien d’autres.
La grande nouveauté, c’est que WPF permet très facilement de créer soi-même
ses propres composants et de les réutiliser à souhait. En utilisant XAML pour
les décrire, il devient alors possible de combiner tous les éléments standards
pour en créer des nouveaux. Vous n’aviez jamais rêvé d’avoir des boutons avec
des combobox à l’intérieur ? Ou encore des listbox composées de textbox,
d’images et de boutons en tout genre ? C’est désormais possible et très
simple à concevoir.
Data binding
Le data binding est le
fait de lier une ressource à une autre afin de garantir leur synchronisation.

WPF dispose de classes (les « Binding Object » sur le schéma) qui
vont permettre la synchronisation entre des données et leur affichage.
Cependant, pour le développeur, l’utilisation de ces classes restera
transparente. En effet, grâce à XAML, il est très simple de relier une
ressource au contenu d’un composant (par exemple une liste de nom à une
listbox).
Style et apparence
WPF met à disposition
du développeur des moyens relativement simple et pratique pour modifier le
style et l’apparence de son interface.
WPF permet
de redéfinir la forme et le style des composants. Qui n’a jamais rêvé
d’arrondir les boutons carré de Windows ? Il est également possible de
redéfinir l’apparence d’un composant selon son état (par exemple un bouton
appuyé/relaché).
En XAML il est possible de définir des styles qui pourront être utilisé par plusieurs
composants, à la manière des classes de style en HTML/CSS, mais avec une
syntaxe différente.
Il est également possible de modifier
l’apparence du contenu. Imaginons par exemple que nous ayons une liste de film
à afficher dans une listbox. Pour chaque film, il va alors être possible
d’afficher son titre, son synopsis etc. en personnalisant chaque propriété (le
titre en gras, le synopsis en italique et aligné a droite…).
En XAML,
il est également possible de définir des thèmes. Un thème défini le style
global de l’interface. Si plusieurs thèmes sont définis, il suffirait d’un clic
dans les options de l’application pour en changer.
Rendu graphique
WPF introduit de nombreuses nouveautés qui permettent d’améliorer le rendu
graphique des interfaces. En effet, avec WPF, tout est vectoriel. Contrairement aux anciennes versions de Windows
dans lesquelles chaque bouton est une image, avec WPF, chaque composant est
décrit en XAML. La moindre courbe, le moindre dégradé fait l’objet d’une
description en XAML. Le rendu est ainsi grandement amélioré lors de zoom car il
n’existe plus d’effet de pixellisation.
Parmi les nouveautés, on notera que le système de rendu utilise désormais
le processeur de la carte graphique pour calculer les divers effets et
animations. Ce procédé, utilisé depuis quelques années par Mac OS X et depuis
quelques mois sous Linux, permet de gagner en performance car cela allège le
travail du CPU mais permet également de garder une fluidité constante, que le
système soit en pleine charge ou pas.
Géométrie 2D
WPF fournit une bibliothèque qui permet de faire des transformations
géométriques très intéressantes. Un exemple sera plus parlant :

Géométrie 3D
WPF fournit également une bibliothèque pour réaliser des objets en 3D. Sur
ces objets en 3D, il est possible d’appliquer des textures, du texte et même de
la vidéo. Ces objets peuvent ensuite être utilisés dans votre interface pour
créer des interactions nouvelles. Malheureusement, pour le moment, il n’est
possible de savoir à quel endroit précis un évènement survient sur ces objets
3D (par exemple où l’utilisateur a cliqué) que pour certaines formes
prédéfinies (cube, pyramide, prisme) ce qui limite leur utilisation.

Médias
Les médias tels que les images, les vidéos et les sons sont pris en charge
par WPF. Avec XAML il est possible d’utiliser les images et les vidéos comme
icône, fond ou partie d’animations. WPF permet également de découper ces deux
médias et de les afficher sur des formes 2D et 3D. Il est alors tout à fait
possible d’imaginer une vidéo sur un volume conique. Un exemple très bluffant reste pour moi un
jeu de taquin utilisant pour fond une vidéo. La vidéo est donc découpée en 9
carrés déplaçable selon les règles du taquin, alors que la vidéo tourne!
Animations
WPF permet aussi de créer ses propres animations. Ces animations sont
codées en XAML. On retrouve les animations standards : déplacement, zoom
avant/arrière, estompement, fondu, transparence, miroir.
Avec quels outils?
Devant la quantité de nouveautés
à assimiler et à prendre en compte lors du développement d’applications WPF, il
semble primordial de trouver les outils qui vous permettront d’exploiter le
plus simplement possible la puissance de WPF. WPF permet de détacher
complètement la partie métier de la partie interface. Il existe donc des
logiciels pour chacune.
Bien entendu, pour développer la
partie métier de votre application, Visual Studio reste la référence. Pour la
partie interface, Microsoft à sorti la gamme Expression qui comprend entre
autre Expression Blend pour la création strict de l’interface et Expression
Design pour créer des composants et des animations utilisables dans Expression
Blend. Microsoft a relativement bien pensé sa gamme puisque Blend et Visual
Studio sont interopérables.
Conclusion
On arrive au terme de cet
article, et j’espère avoir présenté l’essentiel des nouveautés que WPF apporte,
du moins suffisamment pour vous transmettre l’envie de foncer vous documenter
et de vous en servir. De par son fonctionnement et son architecture et grâce à
XAML, la manière de concevoir vos applications Windows en sera totalement
bouleversée. De plus, il est désormais possible de réaliser des interfaces d’un
nouveau type, avec des formes et des transformations géométriques par exemple
qu’on ne pouvait pas réaliser jusqu’alors. Tous à vos claviers donc afin de
concrétiser toutes ces interfaces auxquelles vous rêvez !
Liens
http://msdn2.microsoft.com/en-us/netframework/aa663326.aspx
http://wpf.netfx3.com/
http://www.microsoft.com/products/expression/en/Expression-Blend/try.mspx
http://www.microsoft.com/products/expression/en/Expression-Design/default.mspx