background image

1

Graficzny system komunikacji 

z użytkownikiem GUI

background image

2

Graficzny system komunikacji GUI - 

ćwiczenia

Ćwiczenie 1:

c

e

b

e

a

y

x

x

)

sin(

)

cos(

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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.

background image

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.

background image

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.

background image

11

Graficzny system komunikacji GUI - 

ćwiczenia

Ćwiczenie 1:

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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
VsliderVediteditBoxRbuttonpopcol

Cecha 

Tooltipstring 

pozwala 

na 

określenie 

napisu 

wyświetlanego po wskazaniu danego obiektu myszą. 

Graficzny system komunikacji GUI - 

ćwiczenia

background image

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

background image

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 

automatyczne 

wywołanie 

programu 

obsługi 

przerwania 

wskazanego przez cechę CallBack

Cecha CallBack

background image

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

background image

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

background image

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

background image

25

Wykorzystano  skrypt  colormenu.m  zawierający  menu  z  16 
mapami kolorów oraz opcjami helprememberrestore 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

background image

26

Graficzny system komunikacji GUI - 

ćwiczenia

background image

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

background image

28

Graficzny system komunikacji GUI - 

ćwiczenia

background image

29

Graficzny system komunikacji GUI - 

ćwiczenia

background image

30

Graficzny system komunikacji GUI - 

ćwiczenia

background image

31

Graficzny system komunikacji GUI - 

ćwiczenia

background image

32

Dziękuję za uwagę


Document Outline