Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
ACCUEIL MATLAB FORUM MATLAB FAQ MATLAB TUTORIELS MATLAB LIVRES MATLAB

Présentation des objets graphiques dans MATLAB

Date de publication : 11/06/2007 , Date de mise à jour : 27/08/2007

Par Jérôme Briot (Dut sur DVP.com)
 

Ce tutoriel présente les différents objets graphiques permettant de réaliser des interfaces graphiques complètes et fonctionnelles.

Il comporte :
  • une introduction à la structure et à la gestion des objets graphiques
  • une description rapide des objets conteneurs Root, Figure et Axes
  • une description rapide des objets enfants de l'objet Axes
  • une description rapide des objets UI

Avant propos
1. Généralités .
2. Les objets conteneurs Root, Figure et Axes
2.1. L'objet Root
2.2. Les objets Figure
2.3. Les objets Axes
3. Les objets enfants de l'objet Axes
3.1. Les objets Image
3.2. Les objets Light
3.3. Les objets Line
3.4. Les objets Patch
3.5. Les objets Rectangle
3.6. Les objets Surface
3.7. Les objets Text
4. Les objets UI
4.1. Les objets Uicontrol
4.2. Les autres objets
Remerciements


Avant propos

Pour simplifier la lecture de cet article, l'auteur utilise une syntaxe courte et abusive pour identifier les objets graphiques.
Par exemple, la syntaxe "Objet Image" sera utilisée à la place de "Objet graphique de type Image".


1. Généralités

MATLAB est avant tout un logiciel de calcul matriciel. Il possède néanmoins une panoplie complète d'objets graphiques qui permettent, d'une part d'afficher les résultats de calculs sous des formes variées (point, courbe, surface, graphique) et d'autre part, de créer des interfaces graphiques (GUI) permettant à l'utilisateur d'interagir avec le programme.

Hiérarchie :

Les objets graphiques sont disposés selon une hiérarchie parent enfant comme le montre le schéma suivant :

Identifiant :

Lorsque MATLAB créer un objet graphique, il lui attribue un identifiant (handle en anglais) unique sous la forme d'un nombre (entier ou réel) que l'on peut stocker dans une variable. Dans l'exemple suivant, fig est une variable contenant l'identifiant de l'objet Figure à sa création :

>> fig=figure

fig =

     1
.
Le programmeur gère les identifiants, soit avec la fonction GUIHANDLES, soit avec les fonctions FINDOBJ/FINDALL. Quelques identifiants particuliers peuvent être gérés avec les fonctions suivantes :

  • GCA qui récupère l'identifiant de l'objet Axes courant
  • GCBF qui récupère l'identifiant de l'objet Figure où se trouve l'objet graphique dont l'action est en cours
  • GCBO qui récupère l'identifiant de l'objet graphique dont l'action est en cours
  • GCF qui récupère l'identifiant de l'objet Figure courant
  • GCO qui récupère l'identifiant de l'objet graphique courant
Propriétés :

Tous les objets graphiques possèdent des propriétés. Il est possible de configurer ces propriétés au moment de la création de l'objet en spécifiant le nom et la valeur de la propriété. Par exemple, pour créer un objet Figure dont le fond est de couleur verte :

fig=figure('color',[0 1 0]);
On peut gérer ultérieurement ces propriétés par les fonctions GET et SET, comme le montre le code suivant :

fig=figure;

col=get(fig,'color');
set(fig,'color',[0 1 0]);
Répartition des couches graphiques :

Les objets graphiques sont disposés sur différentes couches empilées les unes sur les autres en respectant l'ordre hiérarchique. L'objet Root est toujours situé en dessous, les objets Figure sur l'objet Root, les objets Axes sur leur conteneur Figure... Lorsque plusieurs objets de même niveau (exemple deux objets Axes) sont présents dans le même conteneur parent, leur ordre de visibilité est donné par leur ordre de création. Le dernier créé est au-dessus du précédent. Ce comportement peut être modifié ultérieurement en utilisant la fonction UISTACK. La seule exception vient des objets UI qui sont toujours sur les objets Axes à l'intérieur d'un même objet Figure.


2. Les objets conteneurs Root, Figure et Axes


2.1. L'objet Root

L'objet graphique Root est un objet invisible unique sans parent. Il est toujours présent et ne peut ni être créé, ni être détruit dynamiquement par l'utilisateur. Il est parent de tous les autres objets. Il représente l'écran de l'ordinateur. Il possède toujours comme identifiant le nombre 0.

La liste des propriétés de l'objet Root est disponible ici.


2.2. Les objets Figure

Les objets Figure sont créés par la fonction FIGURE. Ce sont les conteneurs visibles où sont disposés tous les autres objets graphiques. Plusieurs objets Figure peuvent être créés simultanément et peuvent communiquer ensemble.

La liste des propriétés des objets Figure est disponible ici.


2.3. Les objets Axes

Les objets Axes sont créés par la fonction AXES. Ce sont les zones de traçages des graphiques 2D ou 3D. Les résultats de calcul ou de simulation y sont affichés et peuvent y être manipulés (zoom, rotation...). Une Figure peut posséder plusieurs objets Axes simultanément. On utilise alors la fonction SUBPLOT pour gérer la position de ces objets.

La liste des propriétés des objets Axes est disponible ici.


3. Les objets enfants de l'objet Axes


3.1. Les objets Image

Les objets Image sont créés par les fonctions IMAGE, IMAGESC, IMSHOW... Comme leur nom l'indique, ces objets servent à afficher des images de formats standards (gif, jpeg, tiff, png, eps...) ou de type raw (matrice 2D ou 3D). Ces objets ne peuvent être affichés que dans le plan 2D de référence de Matlab. Il est impossible de manipuler ces objets en 3D.

La liste des propriétés des objets Image est disponible ici.


3.2. Les objets Light

Les objets Light sont créés par la fonction LIGHT. Ils servent à mettre en valeur les objets 3D par application d'un éclairage virtuel.

La liste des propriétés des objets Light est disponible ici.


3.3. Les objets Line

Les objets Line sont créés par les fonctions PLOT, PLOT3, LINE, STEM... Ces objets servent à la fois à afficher des nuages de points à l'aide de marqueurs ou bien des courbes (droite, polyligne,...) en 2D comme en 3D.

La liste des propriétés des objets Line est disponible ici.


3.4. Les objets Patch

Les objets Patch sont créés par les fonctions PATCH, AREA, SCATTER, SCATTER3, FILL, TRISURF, TRIMESH... Ces objets sont utilisés pour afficher des éléments géométriques de définition mathématique simple (polygone, polyèdre). La flexibilité de la gestion de leur couleur et de leur transparence en font des objets très puissants.

La liste des propriétés des objets Patch est disponible ici.


3.5. Les objets Rectangle

Les objets Rectangle sont créés par la fonction RECTANGLE. Ces objets sont plus basiques que les objets Patch. Ils sont utilisés pour créer des polygones 2D simples dont la forme peut être inscrite dans un rectangle (carré, rectangle, cercle, ellipse) L'autre utilité de ces objets est la possibilité d'afficher des rectangles dont les coins sont arrondis.

La liste des propriétés des objets Rectangle est disponible ici.


3.6. Les objets Surface

Les objets Surface sont créés par les fonctions SURFACE, SURF, MESH, SLICE... Ces objets sont généralement utilisés pour représenter des fonctions mathématiques en 3D du type z=f(x,y)

La liste des propriétés des objets Surface est disponible ici.


3.7. Les objets Text

Les objets Text sont créés par les fonctions TEXT, GTEXT, XLABEL, YLABEL, ZLABEL... Ces objets servent à afficher des zones de texte. Ils ont pour particularité d'être transparent (pas de couleur de fond). Ils sont donc très utiles pour les annotations de graphiques.

La liste des propriétés des objets Text est disponible ici.


4. Les objets UI

Les objets UI sont des objets standards que l'on retrouve dans de nombreux langages informatiques. Ils permettent à l'utilisateur d'agir dynamiquement avec un programme à l'aide de boutons, menus, case à cocher...


4.1. Les objets Uicontrol

Ces objets sont créés par la fonction UICONTROL. La propriété Style est utilisée pour les différencier. Le tableau suivant récapitule les différents objets Uicontrol disponibles dans MATLAB.

Nom Désignation Matlab
(Propriété Style)
Aperçu
Case à cocher checkbox
Zone de texte éditable edit
Cadre frame
Liste listbox
Menu déroulant popupmenu
Bouton pushbutton
Bouton Radio radiobutton
Barre de défilement slider
Zone de texte non éditable text
Bouton à 2 états togglebutton

Tous les objets Uicontrol possèdent par défaut les mêmes propriétés. Mais certaines de ces propriétés n'affectent pas certains de ces objets. Le tableau suivant récapitule l'effet des propriétés sur chaque objet. (Oui propriété supportée, Non propriété non supportée)

Propriété checkbox edit frame listbox popupmenu pushbutton radiobutton slider text togglebutton Propriété
BackgroundColor Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui BackgroundColor
BeingDeleted Non Non Non Non Non Non Non Non Non Non BeingDeleted
BusyAction Oui Oui Non Oui Oui Oui Oui Oui Non Oui BusyAction
ButtonDownFcn Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui ButtonDownFcn
Callback Oui Oui Non Oui Oui Oui Oui Oui Non Oui Callback
CData Non Non Non Non Non Oui Non Non Non Oui CData
Children Non Non Non Non Non Non Non Non Non Non Children
Clipping Non Non Non Non Non Non Non Non Non Non Clipping
CreateFcn Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui CreateFcn
DeleteFcn Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui DeleteFcn
Enable Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui Enable
Extent Oui Oui Non Oui Oui Oui Oui Non Oui Oui Extent
FontAngle Oui Oui Non Oui Oui Oui Oui Non Oui Oui FontAngle
FontName Oui Oui Non Oui Oui Oui Oui Non Oui Oui FontName
FontSize Oui Oui Non Oui Oui Oui Oui Non Oui Oui FontSize
FontUnits Oui Oui Non Oui Oui Oui Oui Non Oui Oui FontUnits
FontWeight Oui Oui Non Oui Oui Oui Oui Non Oui Oui FontWeight
ForegroundColor Oui Oui Non Oui Oui Oui Oui Non Oui Oui ForegroundColor
HandleVisibility Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui HandleVisibility
HitTest Non Non Non Non Non Non Non Non Non Non HitTest
HorizontalAlignment Oui Oui Non Oui Oui Oui Oui Non Oui Oui HorizontalAlignment
Interruptible Oui Oui Non Oui Oui Oui Oui Oui Non Oui Interruptible
ListboxTop Non Non Non Oui Non Non Non Non Non Non ListboxTop
Max Oui Oui Non Oui Non Non Oui Oui Non Oui Max
Min Oui Oui Non Oui Non Non Oui Oui Non Oui Min
Parent Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui Parent
Position Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui Position
Selected Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui Selected
SelectionHighlight Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui SelectionHighlight
SliderStep Non Non Non Non Non Non Non Oui Non Non SliderStep
String Oui Oui Non Oui Oui Oui Oui Non Oui Oui String
Style checkbox edit frame listbox popupmenu pushbutton radiobutton slider text togglebutton Style
Tag Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui Tag
TooltipString Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui TooltipString
Type uicontrol uicontrol uicontrol uicontrol uicontrol uicontrol uicontrol uicontrol uicontrol uicontrol Type
UIContextMenu Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui UIContextMenu
Units Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui Units
UserData Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui UserData
Value Oui Non Non Oui Oui Non Oui Oui Non Oui Value
Visible Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui Visible
Propriété checkbox edit frame listbox popupmenu pushbutton radiobutton slider text togglebutton Propriété

La liste des propriétés des objets Uicontrol est disponible ici.


4.2. Les autres objets

Les autres objets regroupent les menus, les barres d'outils... Ils sont créés à l'aide des fonctions UIMENU, UICONTEXTMENU, UIPUSHTOOL, UITOGGLETOOL, UITOOLBAR.

Nom Désignation Matlab
(Propriété Type)
Aperçu
Menus contextuel uicontextmenu
Menus uimenu
Barres d'outils uitoolbar
Bouton (barre outils) uipushtool
Bouton à 2 états (barre outils) uitoggletool


Propriété uicontextmenu uimenu uipushtool uitoggletool uitoolbar Propriété
Accelerator Non Oui Non Non Non Accelerator
BusyAction Oui Oui Oui Oui Non BusyAction
ButtonDownFcn Non Non Non Non Non ButtonDownFcn
CData Non Non Oui Oui Non CData
Callback Oui Oui Oui Oui Non Callback
Checked Non Oui Non Non Non Checked
Children Oui Oui Non Non Oui Children
ClickedCallback Non Non Oui Oui Non ClickedCallback
Clipping Non Non Non Non Non Clipping
CreateFcn Oui Oui Oui Oui Oui CreateFcn
DeleteFcn Oui Oui Oui Oui Oui DeleteFcn
Enable Non Oui Oui Oui Non Enable
ForegroundColor Non Non Non Non Non ForegroundColor
HandleVisibility Oui Oui Oui Oui Oui HandleVisibility
HitTest Non Non Non Non Non HitTest
Interruptible Oui Oui Oui Oui Non Interruptible
Label Non Oui Non Non Non Label
OffCallback Non Non Non Oui Non OffCallback
OnCallback Non Non Non Oui Non OnCallback
Parent Oui Oui Oui Oui Oui Parent
Position Oui Oui Oui Oui Non Position
Selected Non Non Non Non Non Selected
SelectionHighlight Non Non Non Non Non SelectionHighlight
Separator Non Oui Oui Oui Non Separator
State Non Non Non Oui Non State
Tag Oui Oui Oui Oui Oui Tag
TooltipString Non Non Oui Oui Non TooltipString
Type uicontextmenu uimenu uipushtool uitoggletool uitoolbar Type
UIContextMenu Non Non Oui Oui Non UIContextMenu
UserData Oui Oui Oui Oui Oui UserData
Visible Oui Oui Oui Oui Oui Visible
Propriété uicontextmenu uimenu uipushtool uitoggletool uitoolbar Propriété

Remerciements

L'auteur tient à remercier Lou Pitchoun pour la correction orthographique de cet article et caro95470 pour son aide pendant la rédaction de ce même article.



Valid XHTML 1.1!Valid CSS!

Copyright © 2007-2008 Jérôme Briot. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Responsable bénévole de la rubrique MATLAB : Jérôme Briot (Dut) - Contacter par EMail :
Vos questions techniques : forum d'entraide MATLAB - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.