1
Graficzny system komunikacji
z użytkownikiem GUI
2
Graficzny system komunikacji GUI -
ćwiczenia
Ćwiczenie 1:
c
e
b
e
a
y
x
x
)
sin(
)
cos(
3
Graficzny system komunikacji GUI -
ćwiczenia
Ćwiczenie 1:
clf; clear all;
global a b c skala;
%parametry początkowe
a=1; b=1; c=1;
%początkowe wartości parametrów a, b, c
skala=1;
%początkowa wartość parametru skala
set(gcf,'Name','Wykres funkcji')
%zmiana własności obiektu figure
4
Graficzny system komunikacji GUI -
ćwiczenia
Ćwiczenie 1:
%utworzenie listy rozwijalnej
Przel=uicontrol(gcf,'Style','popupmenu',...
'String','0.1|1|10',...
%etykieta listy
'Position',[420 7 70 17],...
%określenie położenia obiektu
'CallBack','przelicz');
%po uaktywnieniu elementu listy
%zostanie uruchomiony skrypt przelicz.m
5
Graficzny system komunikacji GUI -
ćwiczenia
Ćwiczenie 1:
%utworzenie suwaka
Suwak=uicontrol('Style','slider');
%utworzenie suwaka
set(Suwak,'Position',[50 7 100 17]);
%określenie położenia suwaka
set(Suwak,'CallBack','ustaw');
%po uaktywnieniu suwaka zostanie
%uruchomiony skrypt ustaw.m
set(Suwak,'Min',0,'Max',1);
%ustawienie zakresów suwaka
set(Suwak,'Value',a);
%przypisanie początkowej wartości
%suwaka parametru a
6
Graficzny system komunikacji GUI -
ćwiczenia
Ćwiczenie 1:
%utworzenie pola edycyjnego
Edit1=uicontrol('Style','edit');
%utworzenie pola edycyjnego
set(Edit1,'Position',[200 7 200 17]);
%określenie pola edycyjnego
set(Edit1,'String',['a = ',num2str(a)])
%określenie treści
%edytowanego tekstu
7
Graficzny system komunikacji GUI -
ćwiczenia
Ćwiczenie 1:
%utworzenie menu
idm=uimenu('Label','Wy&kres');
%utworzenie elementu menu idm
uimenu(idm,'Label','&Funkcja','CallBack','wykres_f');
%utworzenie podmenu do elementu idm
%po uaktywnieniu uruchomiony zostanie
%skrypt wykres_f.m
uimenu(idm,'Label','&Czysc','CallBack','cla',...
'Separator','on');
%utworzenie podmenu do elementu idm
%po uaktywnieniu uruchomione zostanie
%polecenie cla, separator jest włączony
8
Graficzny system komunikacji GUI -
ćwiczenia
Ćwiczenie 1:
Plik główny zapisać jako obiekty.m.
global a skala;
vall=get(Przel,'Value');
%odczytanie wartości z listy rozwijanej
if (vall==1)
%jeśli wybrano 1-wszą pozycję z listy
skala=0.1;
elseif (vall==2)
%jeśli wybrano 2-gą pozycję z listy
skala=1;
elseif (vall==3)
%jeśli wybrano 3-cią pozycję z listy
skala=10;
end
Plik, w którym następuje przeliczanie skali z listy, zapisać jako
przelicz.m.
9
Graficzny system komunikacji GUI -
ćwiczenia
Ćwiczenie 1:
global a skala;
a1=get(Suwak,'Value')
%odczytanie bieżącej wartości
%ustawionej na suwaku
a=a1.*skala;
%przeliczenie nowej wartości parametru a
set(Edit1,'String',[' a= ',num2str(a)]);
%wyświetlenie nowej wartości a w oknie edycyjnym
Plik, w którym następuje zmiana wartości zmiennej a na
podstawie wskazań suwaka i listy, zapisać jako ustaw.m.
10
Graficzny system komunikacji GUI -
ćwiczenia
Ćwiczenie 1:
global a b c skala
fplot('fsin3',[-2 2])
Plik, w którym następuje rysowanie funkcji fsin3, zapisać jako
wykres_f.m.
function y=fsin3(x)
global a b c
y=cos(a*exp(x))+sin(b*exp(x))+c;
Plik, w którym następuje obliczanie wartości funkcji f(x), zapisać
jako fsin3.m.
11
Graficzny system komunikacji GUI -
ćwiczenia
Ćwiczenie 1:
12
Graficzny system komunikacji GUI -
ćwiczenia
Ćwiczenie 1:
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
-1
-0.5
0
0.5
1
1.5
2
2.5
3
13
Ćwiczenie 2:
Napisać M-plik:
generującą bryłę utworzoną z walca poprzez obrót
fragmentu sinusoidy (funkcja cylinder);
bryłę pokryć kolorową powierzchnią o skali kolorów
proporcjonalnej do wysokości (funkcja surf);
przyjąć
widok
bryły
odpowiadający
domyślnemu
położeniu oka obserwatora (kątowi kierunkowemu -
azymutowi a=-37.5º i kątowi wysokości - elewacji
e=30º);
użyć suwaka do zmiany kąta wysokości widzenia bryły i
pola tekstowego do zmiany skali osi z;
zastosować przycisk do wyświetlenia skali barw oraz
menu rozwijane do zmiany mapy kolorów powierzchni
pokrywającej bryłę.
Graficzny system komunikacji GUI -
ćwiczenia
14
Ćwiczenie 2:
t=2/3:1/6:.7*pi;
y=sin(t);
[a,b,c]=cylinder(y);
hh=surf(a,b,c)
%identyfikator rysunku
%przyporządkowany zmiennej hh
[a,e]=view
%[kierunek wysokość] patrzenia na obiekt
%(kierunek 0-360, wysokość:+/-180),
%domyślnie [-37.5,30]
set(gcf,’Name’,’Przykład Handle Graphics’);
%zmiana nagłówka okna graficznego
Graficzny system komunikacji GUI -
ćwiczenia
15
Ćwiczenie 2:
%utworzenie suwaka o identyfikatorze Vslider
%do zmian kąta wysokości obserwacji narysowanej bryły
Vslider=uicontrol(‘Style’,’slider’);
%przygotowanie
%suwaka
set(Vslider,’Units’,’normalized’);
%jednostka z
%zakresu 0..1
%określenie położenie i rozmiarów suwaka
%[xs ys szerokość długość]
set(Vslider,’Position’,[.01 .055 .05 .4]);
set(Vslider,’Min’,-180,’Max’,180);
%zakres zmian kąta
set(Vslider,’Callback’,’sliderE’);
%Callback
Graficzny system komunikacji GUI -
ćwiczenia
16
Ćwiczenie 2:
% sliderE.m przetwarza położenie suwaka na wartość
% zadanej zmiennej
% utworzenie okna dialogowego o identyfikatorze Vedit
Vedit=uicontrol(‘Style’,’edit’);
%przygotowanie okna
set(Vedit,’Units’,’normalized’);
%jednostka
%z zakresu 0..1
% określenie położenia i rozmiarów okna
set(Vedit,’Position’,[.01 .01 .085 .04]);
set(Vedit,’String’,[num2str(e),’’]);
%wartość początkowa
%nastawy
Graficzny system komunikacji GUI -
ćwiczenia
17
Ćwiczenie 2:
%utworzenie pola tekstowego o identyfikatorze editBox
%do wprowadzania zmian zakresu wartości dla osi Z
%(Zmax)
editBox=uicontrol(‘Style’,’edit’);
%przygotowanie okna
set(editBox,’Units’,’normalized’);
%jednostki z
%zakresu 0..1
%określenie położenia i rozmiarów okna
set(editBox,’Position’,[.01 .8 .05 .04]);
set(editBox,’String’,’1’);
%wartość początkowa
set(editBox,’CallBack’,’editZ’);
%CallBack
%editZ.m przetwarza tekst pola na wartość Zmax
Graficzny system komunikacji GUI -
ćwiczenia
18
Ćwiczenie 2:
%utworzenie przycisku o identyfikatorze Rbutton
%do wyświetlenia skali barw
Rbutton=uicontrol(‘Style’,’radiobutton’);
set(Rbutton,’Units’,’normalized’);
%jednostki
%z zakresu 0..1
%określenie położenia i rozmiarów
set(Rbutton,’Position’,[.87 .94 .12 .045]);
set(Rbutton,’String’,’colbar’,’CallBack’,...
‘if get(Rbutton,’’Value’’)==1, colorbar, else,...
delete(colorbar), end’);
%CallBack
Graficzny system komunikacji GUI -
ćwiczenia
19
Ćwiczenie 2:
%utworzenie menu rozwijalnego o identyfikatorze popcol
%dla zmiany mapy kolorów
popcol=uicontrol(gcf,’Style’,’popup’,...
‘Units’,’normalized’,...
‘String’,’hsv|cool|gray|hot’,...
‘Position’,[.14 .95 .13 .06],...
‘CallBack’,’popme’);
%CallBack
W rezultacie zostaje wyświetlone okno rysunkowe, w skład
którego wchodzą obiekty graficzne o identyfikatorach: hh,
Vslider, Vedit, editBox, Rbutton, popcol.
Cecha
Tooltipstring
pozwala
na
określenie
napisu
wyświetlanego po wskazaniu danego obiektu myszą.
Graficzny system komunikacji GUI -
ćwiczenia
20
Cecha CallBack obiektów Uicontrol i Uimenu zapisywana jest
jako łańcuch znaków i może być:
dowolnym wyrażenie programu MATLAB;
nazwą M-pliku (skryptu) lub funkcji.
Po uaktywnieniu obiektu Uicontrol lub Uimenu następuje
wykonanie operacji występujących w łańcuchu znaków cechy
CallBack.
Przykłady użycia cechy CallBack:
set(Vslider,’Callback’,’sliderE’);
%do sliderE.m
set(editBox,’CallBack’,’editZ’);
%do editZ.m
set(Rbutton,’Position’,[.87 .94 .12 .045]);
set(Rbutton,’String’,’colbar’,’CallBack’,...
%polecenia
‘if get(Rbutton,’’Value’’)==1, colorbar, else,...
delete(colorbar), end’);
Cecha CallBack
21
popcol=uicontrol(gcf,’Style’,’popup’,...
......................
‘CallBack’,’popme’);
%do popme.m
Cecha CallBack powoduje śledzenie elementów sterujących GUI
(suwak Vslider, pole tekstowe editBox, przycisk Rbutton,
menu rozwijalne popcol). Zmiana położenia suwaka, wpisanie
nowej wartości do pola tekstowego, wybranie opcji menu lub
wciśnięcie
przycisku
powoduje
przerwanie
programu
i
automatyczne
wywołanie
programu
obsługi
przerwania
wskazanego przez cechę CallBack.
Cecha CallBack
22
Plik sliderE.m:
%sliderE - określa nowy kąt wysokości z
%
stawienia suwaka
new_e=get(Vslider,’Value’);
%wyświetlenie wartości nastawionej suwakiem w polu
%tekstowym Vedit
set(Vedit,’String’,[num2Str(new_e),’’]);
%ustawienie widoku pod nowym kątem wysokości [a,new_e]
view(a,new_e)
Cecha CallBack
23
Plik editZ.m:
%editZ –
przetwarza tekst wpisany w okno dialogowe
%
na wartość
newZ=str2num(get(editBox,’String’));
set(gca,’Zlim’,[0,newZ]);
%nowe wartości skalowania osi z
Cecha CallBack
24
Plik popme.m:
%popme –
wybiera z menu wskazane mapy kolorów
val=get(popcol,’Value’);
if (val==1),
colormap(hsv)
elseif (val==2),
colormap(cool)
elseif (val==3),
colormap(gray)
elseif (val==4),
colormap(hot)
end;
Cecha CallBack
25
Wykorzystano skrypt colormenu.m zawierający menu z 16
mapami kolorów oraz opcjami help, remember, restore i done.
Menu jest obiektem Uimenu i można je zainstalować przy
pomocy polecenia:
»
colormenu
Menu zostaje wyświetlone w bieżącym oknie rysunkowym jako
colormaps.
Cecha CallBack
26
Graficzny system komunikacji GUI -
ćwiczenia
27
Graficzny system komunikacji GUI -
ćwiczenia
-1
-0.5
0
0.5
1
-1
-0.5
0
0.5
1
0
0.2
0.4
0.6
0.8
1
28
Graficzny system komunikacji GUI -
ćwiczenia
29
Graficzny system komunikacji GUI -
ćwiczenia
30
Graficzny system komunikacji GUI -
ćwiczenia
31
Graficzny system komunikacji GUI -
ćwiczenia
32
Dziękuję za uwagę