Introduction
Il y a deux façons de réaliser une interface graphique Matlab,
- Utiliser l'outil graphique Guide qui facilite beaucoup la vie mais qui ne permet
pas de comprendre vraiment ce que l'on fait. Il génère deux fichiers dont l'un ne peut pas être édité et
l'autre pas très facile à déchiffrer. Il suffit d'avoir un petit problème dans l'un des deux fichiers et on
n'arrive plus à ouvrir l'interface graphique.
- La deuxième méthode consiste à tout écrire soit même. C'est un peu plus compliqué, un peu plus long, mais on
maîtrise tout. Le programme tient dans un seul script que l'on peut retoucher comme bon il nous semble. C'est
cette méthode que j'ai décidé de décrire ici. Il ne s'agit pas d'un cours très détaillé mais plutôt d'un
exemple permettant de monter une interface graphique rapidement.
Les objets graphiques
Les objets graphiques les plus importants sont:
- l'objet fenêtre: C'est le conteneur principal qui va recevoir tous les autres
objets graphiques. Il est crée à l'aide de la fonction figure().
-
L'objet axes: C'est le conteneur qui reçoit les tracés et tout ce qui va avec.
-
Les Contrôles: Boutons, case à cocher, champs de saisie, liste déroulantes...Il
sont tous crée à l'aide de la fonction uicontrol().
- Les menus: Il sont crée par la fonction uimenu().
-
Les panneaux: Ce sont des conteneurs permettant de regrouper d'autres contrôles.
On les crée avec la fonction uipannel().
- Les groupes: Ce sont des panneaux particuliers permettant de gérer un ensemble de
contrôles comme les radiobuttons. On les crée avec la fonction uibuttongroup() .
L'objet fenêtre
Pour commencer, il faut créer une fenêtre qui contiendra les autres contrôles. Pour ça, on utilise la fonction
figure().
La fonction a beaucoup de paramètres, mais on n'est pas obligé de tous les préciser.
Voici quelques propriété de l'objet figure:
CloseRequestFcn |
Permet de définir le nom de la fonction qui sera appelée si on ferme la fenêtre à l'aide de la fonction
close ou en cliquant le x rouge. Cette fonction peut servir (entre autres) à fermer les fichiers et les
ports ouverts avant de quitter 
|
Position |
Position de la fenêtre par rapport à l'écran. On
peut changer les unités à l'aide de la propriété units
On peut utiliser get(0,'ScreenSize') qui retourne les dimensions de l'écran (ex [1 1 1280
800]) histoire de donner à la fenêtre des dimensions correctes. |
Visible |
Définit si la fenetre est visible ou pas, il peut prendre les valeur on ou off |
Enable
|
définit si le contrôle est opérationnel ou non. Elle peut prendre les valeurs {on} , inactive , off
|
color
|
Couleur de fond de la fenetre. On peut utiliser une matrice [rouge vert bleu] ou les
couleurs prédéfinies:
'r' ou 'red', 'g' ou 'green' , 'b' ou 'blue' , 'y' ou 'yellow' , 'm' ou 'magenta' , 'c' ou 'cyan' , 'w' ou
'white' , 'k' ou 'black' |
MenuBar |
Pour afficher ou non la barre des menus et la barre d'outils que matlab affiche par défaut dans la
fenêtre. Les valeurs possibles sont {figure} pour oui et none pour non |
name |
Titre de la fenêtre |
NumberTitle |
Pour afficher ou non le numéro de figure. Valeurs: {on}, off |
Pointer |
Pointeur de la souris quand celui ci survole la fenêtre. Valeurs possibles: crosshair | {arrow} | watch
| topl |
topr | botl | botr | circle | cross | fleur | left | right | top | bottom | fullcrosshair | ibeam | custom
| hand |
Resize |
détermine si on peut redimensionner la fenêtre ou non. Valeurs possibles: {on} | off |
Toolbar |
Pour afficher ou non la barre d'outils par défaut des fenêtres Matlab. valeurs possibles: none | {auto}
| figure
avec l'option par défaut: auto, la barre d'outil est affichée mais elle est supprimée dès qu'on
place un contrôle dans la fenêtre |
Units |
Unité de mesure pour le paramètre Position. Les valeurs possibles sont
inches | centimeters | normalized | points | {pixels} | characters |
Pour plus de détail:
http://www.mathworks.com/help/matlab/ref/figure_props.html
fh = figure('Position',[400 300 350 160]);
Dans l'exemple ci-dessus,
fh représente l'identificateur (handler) de la figure, on
peut lui donner le non que l'on veut. Le paramètre
'position' définit la position et
les dimensions de la fenêtre. Sous Matlab, l'origine des coordonnées x,y est située au coin bas-gauche de
l'écran. (400,300) est la position du coin bas gauche de la fenêtre par rapport à l'origine. 350 est la
largeur de la fenêtre, 160 est sa hauteur.
Si on veut se débarrasser de la barre des menus:
fh = figure('Position',[400 300 350 160],'Menubar','None');
Pour se débarrasser du numéro de figure et lui donner un nom, on utilise les paramètres
'NumberTitle'
et
'name',
On peut les rajouter après la création de la fenêtre à l'aide de la fonction
set():
set(fh, 'NumberTitle', 'off', 'name' , 'Ce que vous voulez')
Les Abréviations
Les propriété ont souvent des noms assez long. Matlab accepte qu'on utilise seulement les premiers caractères
d'une propriété. Par exemple: '
back' à la place de '
backgroud' , '
norm' à la place de '
normalized'
Les valeurs par défaut des propriétés Toutes les propriété des objets graphiques ont des valeurs par défaut. Quand
on crée un contrôle, on ne précise jamais toutes ces propriétés. Matlab utilise les valeurs par défaut pour toutes
les propriétés qui n?ont pas été précisées.
Dans la documentation Matlab, la valeurs par défaut est précisée entre { }. Par exemple, la propriété
Units
du contrôle
Uicontrol peut prendre les valeurs:
{pixels} |
normalized | inches | centimeters | points | characters . La valeur par défaut de cette propriété est
pixels.
Il est possible de modifier la valeur par défaut d'une propriété pour un contrôle donné. Pour designer la
valeur par défaut de la propriété d'un contrôle, on colle les 3 mots:
default,
nom du contrôle,
nom de la propriété. Par exemple: defaultuicontrolunits est la désignation la la valeur par
défaut
de la proprité
units pour le contrôle
uicontrol
Pour faire que la valeur par défaut de
units soit la valeur
normalized:
set(0, 'DefaultUicontrolUnits', 'normalized')
Les fonctions set() et get() Après avoir crée un contrôle, on peut définir ou redéfinir une ou plusieurs de ces
propriétés à l'aide de la fonction
set(). On peut aussi obtenir la valeur d'une
propriété à l'aide de la fonction
get()
h = figure();
set(h, 'Menubar', 'none', 'name', 'Investigations')
m = get(h,'position') --> 621 269 560 420
Les valeurs par défaut des propriétés
Voir
ICI