1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
| %slider_temps_reel - Exemple de slider en temps reel
%
%Utilisation :
% slider_temps_reel
%
% Affiche une figure avec un slider personnalise
% Le slider se deplace a l'aide de la souris
% La valeur courante est affichee sous le slider
%
% La position de la souris dans la figure est aussi affichee
%
% 9 juin 2009 / Laurent seigner
%%
function slider_temps_reel
clc %nettoyage ecran Command Windows
%% Conditions initiales
etat_souris=0;
valeur_min=0;
valeur_max=100;
decallage_x=0;
valeur_curseur=0; %entre 0 et 100%
etat=0;
%% Creation des objets
handles(1)=figure('units','pixels',...
'position',[100 100 800 200],...
'name','custom_showmotion',...
'numbertitle','off',...
'tag','interface',...
'WindowButtonMotionFcn',@motion,...
'WindowButtonDownFcn',@down,...
'WindowButtonUpFcn',@up);
%afficheur x_souris
handles(2)=uicontrol('style','text','position',[125 20 20 10]);
%afficheur y_souris
handles(3)=uicontrol('style','text','position',[100 20 20 10]);
%creation du dessin
handles(4)=axes('unit','pixel','position',[0 0 800 600],...
'visible','off','xlim',[0 1],'ylim',[0 1]);
%creation de la glissiere
handles(5)=rectangle('position',[0.1 0.1 0.8 0.1],...
'edgecolor',[0 1 0],'facecolor',[0 1 0]);
%creation du curseur
handles(7)=rectangle('position',[0.1 0.1 0.02 0.1],...
'edgecolor',[0 0 0],'facecolor',[0 0 0]);
%creation affichage valeur mini (0)
handles(8)=uicontrol('style','text',...
'position',[80 50 20 10],...
'string', valeur_min );
%creation affichage valeur max (100)
handles(9)=uicontrol('style','text',...
'position',[702 50 20 10],...
'string', valeur_max );
%creation affichage valeur curseur (valeur entre 0 et 100)
handles(10)=uicontrol('style','text',...
'position',[400 50 20 10],...
'string', valeur_curseur );
%% Callback WindowButtonMotionFcn : déplacement de la souris
function motion (obj,event)
%% Recuperation de la position de la souris et affichage
P=get(handles(1),'CurrentPoint');
x_souris=P(1);
y_souris=P(2);
set(handles(2),'string',x_souris); %mise a jour affichage
set(handles(3),'string',y_souris);
%% Recuperation de la position du curseur
position_curseur=get(handles(7),'position');
x_curseur=position_curseur(1)*800; %x_curseur en pixel
y_curseur=position_curseur(2)*600;
%% Gestion du grafcet
if ( (etat==2) && (etat_souris==0) )
etat=0; %retour a l'etat attente
elseif (etat==1)
etat=2; %mouvement curseur
elseif ((etat==0) && (etat_souris==1) && ...
(x_souris >= x_curseur) && ...
(x_souris <= (x_curseur + (0.02*800))) && ...
(y_souris >= y_curseur) && ...
(y_souris <=( y_curseur + (0.1*600))) && ...
(valeur_curseur >=0) && (valeur_curseur<=100) )
etat=1; %prise ref
end
%% Gestion des actions
switch etat
case 0
%attente
case 1
%decallage entre la souris et la ref du curseur en pixel
decallage_x=x_souris-x_curseur;
%curseur gris
set(handles(7),'edgecolor',[0.5 0.5 0.5],...
'facecolor',[0.5 0.5 0.5]);
case 2
%new x curseur en %
new_x_curseur= ((x_souris-decallage_x)/800);
%correction du bug du a la vitesse de rafraichissement
if new_x_curseur<0.1
new_x_curseur=0.1;
end
if new_x_curseur>0.88
new_x_curseur=0.88;
end
new_position=[new_x_curseur 0.1 0.02 0.1];
valeur_curseur= (((new_x_curseur-0.1)*1.0256)/0.8)*100;
%mise a jour position curseur et affichage
set(handles(7),'position',new_position);
set(handles(10),'string',valeur_curseur);
end
end
%% Callback WindowButtonDownFcn : Appui sur le bouton de la souris
function down(obj,event)
etat_souris=1; %on declare la souris appuyee
end
%% Callback WindowButtonUpFcn : Relachement du bouton de la souris
function up(obj,event)
etat_souris=0; %on declare la souris relachee
set(handles(7),'edgecolor',[0 0 0],'facecolor',[0 0 0]);
end
end |
Partager