On se propose de faire une interface graphique qui permettra d’afficher, à l’aide d’un bouton, une couleur aléatoire sur un axe.

Pour cela, l’IHM devra contenir :

  • un objet Figure: qui sera la fenêtre principale de l’IHM
  • un objet Axes : pour l’affichage de la couleur
  • un objet Uicontrol de type Pushbutton : pour générer la couleur

Dans la figure ci dessous, vous avez une illustration du résultat attendu:

 

Générateur de couleur
Générateur de couleur

 

Lorsque l’utilisateur clique sur l’objet Pushbutton, l’objet Axes change de couleur de façon aléatoire.

 

Solution :

Le code de l’interface graphique est écrit dans un seul fichier mpt_gencouleur.m. Ce fichier contient à la fois la gestion des objets et de leurs actions.

 

Dans un premier temps, on crée la figure:

% Création de l'objet Figure
fig = figure('units', 'pixels', ...
    'position', [520 380 300 250], ...
    'name', 'Générateur de couleur aléatoire');

 

Ensuite, on crée le bouton «Générer une couleur» :

% Création du bouton "Générer une couleur"
uicontrol('style', 'pushbutton', ...
    'units', 'pixels', ...
    'position',[75 15 150 20], ...
    'String', 'Générer une couleur', ...
    'callback', @mpt_genC);

 

Création de l’axe qui va changer de couleur:

% Création de l'objet Axes qui permettra d'afficher la couleur
axes('units', 'pixels', ...
    'position', [25 70 250 150], ...
    'tag','axes1');

 

Stockage des identifiants des objets dans la structure « handles »:

% Stockage des identifiants utiles dans la structure "handles"
handles = guihandles(fig);
guidata(fig,handles)

 

On crée la fonction callback appelée par l’action sur le bouton « Générer une couleur » :

function mpt_genC(obj,event)
% Fonction associée au Callback de l'objet Pushbutton
% obj : identifiant de l'objet Pushbutton
% event : événement liés à l'objet Pushbutton
% Récupération des identifiants utiles
fig = get(obj,'parent');
handles = guidata(fig);
 
% Modification de la couleur de l'objet Axes
set(handles.axes1, 'color', rand(1,3));

 

Code source est disponible ici