21.07.2014 Views

download - Sisteme de Programare pentru Modelare si Simulare

download - Sisteme de Programare pentru Modelare si Simulare

download - Sisteme de Programare pentru Modelare si Simulare

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

20. CREAREA INTERFEŢELOR GRAFICE<br />

INTERACTIVE<br />

Crearea interfeţelor grafice interactive (Graphics User Interface) utilizează<br />

diverse funcţii Matlab specifice <strong>pentru</strong>:<br />

• crearea elementelor <strong>de</strong> control <strong>pentru</strong> interfeţele grafice interactive;<br />

• crearea meniurilor <strong>pentru</strong> interfeţele grafice;<br />

• citirea interactivă a datelor <strong>de</strong> pe grafice;<br />

• selectarea interactivă a fişierelor citite;<br />

• stabilirea interactivă a fişierelor salvate;<br />

• selectarea interactivă a fonturilor;<br />

• selectarea interactivă a culorilor.<br />

20.1. Crearea elementelor <strong>de</strong> control <strong>pentru</strong> interfeţele<br />

grafice interactive<br />

Pentru controlul interactiv al reprezentărilor grafice, în Matlab se foloseşte<br />

programarea cu obiecte. În acest scop, sunt <strong>de</strong>finite mai multe elemente <strong>de</strong> control<br />

interactiv:<br />

butoane prin apăsare (push button şi toggles button);<br />

casete butoane radio (radio button);<br />

casete <strong>de</strong> control (checkbox);<br />

casete <strong>de</strong> editare (edit text şi static text);<br />

potenţiometre liniare (sli<strong>de</strong>rs);<br />

buton <strong>si</strong>mplu (frame);<br />

listă <strong>de</strong> opţiuni (listbox şi popup menu);<br />

trasarea axelor (axes).<br />

Butoanele prin apăsare sunt comutatoare care generează o acţiune, dacă sunt<br />

apăsate, însă nu rămân în starea apăsat. Pentru activarea unui buton prin apăsare, se<br />

apasă şi se eliberează butonul mouse-ului. Aceste butoane se utilizează dacă<br />

acţiunea pe care o realizează nu este <strong>de</strong>pen<strong>de</strong>ntă <strong>de</strong> nici o altă acţiune executabilă<br />

prin interfaţă.<br />

Butoanele radio sunt mutual exclu<strong>si</strong>ve (numai unul poate fi apăsat în acelaşi<br />

timp). Pentru activarea butonului radio, se apasă şi se eliberează butonul mouseului.<br />

Starea butonului este indicată prin afişare. Prin algoritm, trebuie ca<br />

implementarea acestor butoane să fie mutual exclu<strong>si</strong>vă.<br />

Potenţialele liniare acceptă valori numerice la intrare şi permit utilizatorului<br />

să <strong>de</strong>plaseze cursorul (prin apăsarea butonului mouse-ului, fără eliberarea acestuia)<br />

în interiorul unor limite. Poziţia cursorului indică valoarea numerică selectată la


422<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

eliberarea butonului mouse-ului. Se pot stabili valorile minimă, maximă şi iniţială.<br />

Lista <strong>de</strong> opţiuni a meniului este <strong>de</strong>sfăşurată în momentul selectării. Dacă nu<br />

este activată, se afişează un <strong>si</strong>ngur buton, cu un text care reprezintă configuraţia<br />

curentă. Această po<strong>si</strong>bilitate <strong>de</strong> control grafic se foloseşte atunci când se doreşte<br />

selectarea unei opţiuni dintr-o listă mutual exclu<strong>si</strong>vă, fără modificarea valorilor, ca<br />

în cazul butoanelor radio.<br />

Casetele <strong>de</strong> editare permit introducerea unui text <strong>de</strong> la tastatură. După ce acesta a<br />

fost scris în casetă, se apasă tasta „Enter” sau se selectează butonul care lanseză<br />

execuţia. Se utilizează în cazul în care programul trebuie să preia interactiv un text.<br />

Casetele <strong>de</strong> control sunt generate prin acţiunea <strong>de</strong> apăsare, însă rămân în<br />

această stare până la o nouă selectare. Aceste obiecte sunt utilizate <strong>pentru</strong> a permite<br />

folo<strong>si</strong>rea unui număr <strong>de</strong> opţiuni in<strong>de</strong>pen<strong>de</strong>nte, basculând între două stări. Pentru<br />

activarea casetei <strong>de</strong> control se apasă şi se eliberează butonul mouse-ului, iar starea<br />

sa este indicată prin afişare.<br />

Pentru crearea elementelor <strong>de</strong> control, utilizate <strong>de</strong> interfeţele grafice<br />

interactive, se foloseşte funcţia gui<strong>de</strong>, care dă po<strong>si</strong>bilitatea stabilirii interactive cu<br />

mouse-ul a butoanelor sau funcţia uicontrol, care se apelează cu <strong>si</strong>ntaxa:<br />

h=uicontrol('Numeproprietate1',valoare1, 'Numeproprietate2',valoare2,...).<br />

Interfeţele grafice sunt copii ai obiectului figură şi sunt in<strong>de</strong>pen<strong>de</strong>nte <strong>de</strong><br />

obiectul axe. Funcţia uicontrol acceptă perechile proprietate/valoare ca argumente<br />

<strong>de</strong> intrare.<br />

Proprietăţile elementelor <strong>de</strong> control, <strong>pentru</strong> interfeţele grafice interactive, pot<br />

fi specificate la creare, prin inclu<strong>de</strong>rea perechilor nume/valoare proprietate sau<br />

ulterior, prin i<strong>de</strong>ntificarea obiectului şi folo<strong>si</strong>rea funcţiei set.<br />

Proprietăţile acceptate, precum şi valorile po<strong>si</strong>bile ale fiecărei proprietăţi,<br />

sunt <strong>de</strong>scrise mai jos şi pot fi afişate cu funcţia get.<br />

Pentru citirea proprietăţilor se poate tasta gui<strong>de</strong>, care <strong>de</strong>schi<strong>de</strong> o figură<br />

implicită, unitled.fig, din care, prin apăsarea butonului „Tools” se ajunge la<br />

„Property Inspector”, care permite citirea tuturor proprietăţilor.<br />

1. BackgroundColor - culoare<br />

Această proprietate specifică culoarea folo<strong>si</strong>tă <strong>pentru</strong> a colora fondul<br />

dreptunghiului, <strong>de</strong>finit prin interfaţa <strong>de</strong> control. Culoarea poate fi specificată printrun<br />

triplet RGB sau prin numele <strong>de</strong> culori pre<strong>de</strong>finite în Matlab. De la mouse se<br />

poate alege tripletul RGB dorit, în procente.<br />

2. BusyAction -queue sau cancel<br />

Prin aceasta se specifică modul <strong>de</strong> acţiune, care poate fi pe rând (queue)<br />

sau fără (cancel).<br />

3. ButtonDownFcn - funcţie<br />

Această proprietate permite chemarea unei funcţii Matlab, prin apăsarea<br />

butonului.<br />

4. CData - date<br />

Permite introducerea unor date sub formă <strong>de</strong> expre<strong>si</strong>e.


Crearea interfeţelor grafice interactive 423<br />

5. CallBack - şir caractere<br />

Această proprietate permite evaluarea oricărei expre<strong>si</strong>i Matlab, inclu<strong>si</strong>v<br />

nume <strong>de</strong> fişiere <strong>de</strong> tip „m” sau funcţii, conţinută în şirul <strong>de</strong> caractere la<br />

activarea obiectului interfaţă.<br />

6. Children - vector<br />

Obiectul interfaţă nu are copii, astfel încât această proprietate este<br />

întot<strong>de</strong>auna o matrice goală.<br />

7. Clipping - on sau off<br />

Această proprietate arată dacă butonul va clipi, <strong>pentru</strong> on, sau nu, <strong>pentru</strong> off.<br />

8. CreateFcn - nume<br />

Această proprietate permite crearea unei funcţii Matlab, care să fie apelată<br />

prin buton.<br />

9. DeleteFcn - nume<br />

Permite ştergerea unei funcţii Matlab, apelabilă prin buton.<br />

10. Enable - on sau off sau inactive<br />

Această proprietate stabileşte dacă butonul este utilizat, on, neutilizat, off<br />

sau inactiv, inactive.<br />

11. FontAngle - normal sau italic sau oblique<br />

Permite stabilirea tipului <strong>de</strong> înclinare a literelor, care poate fi normală,<br />

normal, italică, italic, sau oblică, oblique.<br />

12. FontName - nume<br />

Specifică numele, nume, fontului <strong>de</strong> scriere utilizat, care implicit este MS<br />

Sans Serif.<br />

13. FontSize - dim<br />

Precizează dimen<strong>si</strong>unea, dim, a fontului utilizat.<br />

14. FontUnits - inches sau centimeters sau normalized sau points sau pixeli<br />

Această proprietate specifică unităţile <strong>de</strong> măsură utilizate <strong>pentru</strong> font.<br />

Unitatea points este egală cu 1/72 inch, adică 0.0353 centimetri, iar<br />

celelalte unităţi <strong>de</strong> măsură sunt unităţi absolute.<br />

15. FontWeight - light sau normal sau <strong>de</strong>mi sau bold<br />

Specifică gro<strong>si</strong>mea literei la scriere, care poate fi: subţire (light), normală<br />

(normal), semigroasă (<strong>de</strong>mi) sau groasă (bold).<br />

16. ForegroundColor - culoare<br />

Această proprietate precizează culoarea textului afişat în obiectul interfaţă.<br />

Culoarea poate fi specificată printr-un triplet RGB sau prin numele <strong>de</strong><br />

culori pre<strong>de</strong>finite în Matlab.De la mouse se poate alege tripletul RGB in<br />

procente.<br />

17. HandleVi<strong>si</strong>bility - on sau callback sau off<br />

Această proprietate precizează dacă obiectul este vizibil (on), invizibil (off)<br />

sau în spate (callback).


424<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

18. HorizontalAlignment - left sau center sau right<br />

Această proprietate precizează modul <strong>de</strong> aliniere al textului <strong>de</strong>finit <strong>de</strong><br />

proprietatea String, în obiectul interfaţă <strong>de</strong>finit.<br />

19. Max - scalar<br />

Această proprietate specifică cea mai mare valoare alocată proprietăţii<br />

Value. Pentru butoane radio şi casete <strong>de</strong> control, care operează cu<br />

comutatoare „on/off”, aceasta reprezintă setarea lui Value, când interfaţa<br />

este în poziţia on. Pentru listele <strong>de</strong> opţiuni, această proprietate specifică<br />

numărul maxim <strong>de</strong> opţiuni, care pot fi <strong>de</strong>finite <strong>de</strong> meniu. Pentru<br />

potenţiometre liniare, această proprietate este cea mai mare valoare care<br />

poate fi selectată. Valoarea implicită este 1.<br />

20. Min - scalar<br />

Această proprietate specifică cea mai mică valoare alocată proprietăţii<br />

Value. Pentru butoane radio şi casete <strong>de</strong> control, care operează cu<br />

comutatoare „on/off”, aceasta reprezintă setarea lui Value, când interfaţa<br />

este în poziţia off. Pentru listele <strong>de</strong> opţiuni, această proprietate specifică<br />

numărul minim <strong>de</strong> opţiuni, care pot fi <strong>de</strong>finite <strong>de</strong> meniu. Pentru<br />

potenţiometre liniare, această proprietate este cea mai mică valoare care<br />

poate fi selectată. Valoarea implicită este 0.<br />

21. Parent - i<strong>de</strong>ntificator<br />

Această proprietate returnează i<strong>de</strong>ntificatorul obiectului figură (părinte), în<br />

care este afişat obiectul interfaţă. Funcţia gca returnează, <strong>de</strong> asemenea,<br />

i<strong>de</strong>ntificatorul axelor curente ale figurii. Această proprietate se poate seta<br />

prin specificarea i<strong>de</strong>ntificatorului obiectului părinte, ca prim argument al<br />

funcţiei uicontrol (fără a fi necesar cuvântul „Parent”, ca <strong>de</strong> exemplu:<br />

uicontrol(1,'Style','Sli<strong>de</strong>r',…), care <strong>de</strong>termină i<strong>de</strong>ntificatorul figurii<br />

curente.<br />

22. Po<strong>si</strong>tion - vector [ 4 elemente ]<br />

Prin această proprietate se specifică mărimea şi localizarea obiectului<br />

interfaţă în fereastra grafică, <strong>de</strong>finită printr-un vector <strong>de</strong> 4 mărimi,<br />

poz=[orizontal vertical lungimea lăţimea], un<strong>de</strong>: orizontal şi vertical sunt<br />

distanţele, pe orizontală şi verticală, <strong>de</strong> la colţul din stânga-jos al ferestrei<br />

grafice până la colţul stânga-jos al dreptunghiului care <strong>de</strong>fineşte obiectul<br />

interfaţă, iar lungimea şi lăţimea sunt dimen<strong>si</strong>unile dreptunghiului care<br />

<strong>de</strong>fineşte obiectul interfaţă. Elementele vectorului poz sunt date în unităţile<br />

<strong>de</strong> măsură specificate <strong>de</strong> proprietatea Units. Matlab-ul utilizează implicit<br />

unităţile normalizate, la care (0,0) este colţul din stânga-jos, iar (1,1) este<br />

colţul din dreapta-sus al ferestrei grafice.<br />

23. String - şir <strong>de</strong> caractere<br />

Această proprietate <strong>de</strong>fineşte eticheta butoanelor prin apăsare, a butoanelor<br />

radio, a casetelor <strong>de</strong> control şi a listelor <strong>de</strong> opţiuni. Pentru introducerea mai<br />

multor opţiuni într-o listă <strong>de</strong> meniuri sau <strong>pentru</strong> a avea linii multiple într-o<br />

casetă <strong>de</strong> control, se introduc şirurile separate <strong>de</strong> caracterul „|” (bară


Crearea interfeţelor grafice interactive 425<br />

verticală). Întreaga listă trebuie plasată între ghilimele . Pentru casetele <strong>de</strong><br />

editare, această proprietate este setată la şirul introdus <strong>de</strong> utilizator.<br />

24. Style - pushbutton sau togglebutton sau radiobutton sau checkbox sau<br />

edit sau text sau sli<strong>de</strong>r sau frame sau listbox sau popupmenu<br />

Această proprietate <strong>de</strong>fineşte tipul <strong>de</strong> obiect <strong>de</strong> control care se creează,<br />

respectiv buton <strong>de</strong> apăsare, buton radio, casetă <strong>de</strong> control, potenţiometru<br />

liniar, casetă <strong>de</strong> editare sau listă <strong>de</strong> opţiuni.<br />

25. Type - şir <strong>de</strong> caractere<br />

Această proprietate i<strong>de</strong>ntifică tipul <strong>de</strong> obiect grafic. Pentru obiectul<br />

interfaţă şirul <strong>de</strong> caractere este întot<strong>de</strong>auna uicontrol.<br />

26. Units - pixeli sau normalized sau inches sau centimeters sau points<br />

Această proprietate specifică unităţile <strong>de</strong> măsură utilizate <strong>pentru</strong><br />

interpretarea proprietăţii Po<strong>si</strong>tion. În toate cazurile, măsurarea se face din<br />

colţul stânga jos al ferestrei grafice. Unităţile normalizate transformă colţul<br />

stânga jos al ferestrei grafice în coordonatele (0, 0), iar colţul din dreapta<br />

sus în (1.0, 1.0). Unitatea points este egală cu 1/72 inch, adică 0.0353<br />

centimetri, iar celelalte unităţi <strong>de</strong> măsură sunt unităţi absolute.<br />

27. UserData - matrice<br />

Proprietatea este orice matrice asociată obiectului, care poate să nu fie<br />

folo<strong>si</strong>tă, dar poate fi vizualizată folo<strong>si</strong>nd funcţia get.<br />

28. Value - scalar<br />

Valorile po<strong>si</strong>bile ale acestei proprietăţi <strong>de</strong>pind <strong>de</strong> metoda <strong>de</strong> control, ele<br />

putând fi stabilite interactiv cu mouse-ul sau prin intermediul funcţiei set.<br />

Afişarea pe ecran reflectă schimbările făcute prin stabilirea directă a<br />

proprietăţii Value.<br />

29. Vi<strong>si</strong>ble - on sau off<br />

Proprietatea <strong>de</strong>termină dacă obiectul <strong>de</strong> control al interfeţei este vizibil pe<br />

ecran, cazul on sau nu este vizibil, cazul off. Valoarea implicită este on.<br />

Pentru exemplificarea modului <strong>de</strong> creare a interfeţelor grafice interactive se<br />

con<strong>si</strong><strong>de</strong>ră următoarele exemple:<br />

• crearea unui buton prin apăsare, care crează axe normalizate curente, se<br />

realizează prin secvenţa,<br />

h = uicontrol('Style','Pushbutton','Units','normalized','Po<strong>si</strong>tion', ...<br />

[0.2 0.8 0.3 0.1],'Callback','cla','string','Creează Axe');<br />

• crearea unei interfeţe interactive, care schimbă culoarea unei reprezentări<br />

grafice, prin selectarea unei matrice <strong>de</strong> culoare dintr-o listă <strong>de</strong> meniuri<br />

(popup menu); se realizează cu secvenţa:<br />

hp=uicontrol('Style','Popup','String','hsv|hot|cool|gray|','Units', ...<br />

'normalized','Po<strong>si</strong>tion',[0.2 0.8 0.3 0.2],'Callback','setmap');<br />

care nece<strong>si</strong>tă existenţa unui fişier setmap.m, conţinând următoarele instrucţiuni:


426<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

val=get(hp,'Value');if val==1; colormap(hsv); elseif val==2; colormap(hot);<br />

elseif val==3; colormap(cool); elseif val==4; colormap(gray); end,<br />

şi <strong>pentru</strong> a evi<strong>de</strong>nţia efectul se poate apela secvenţa,<br />

[X,Y,Z]=sphere(20); surf(X,Y,Z);grid<br />

care trasează o sferă;<br />

• crearea a şase tipuri <strong>de</strong> obiecte <strong>de</strong> control al interfeţelor grafice, prezentate<br />

în figura 20.1,<br />

Fig.20.1. Obiecte <strong>de</strong> control ale interfeţei grafice<br />

se realizează cu secvenţa,<br />

hpb=uicontrol('Style','Pushbutton','Units','normalized','Po<strong>si</strong>tion', ...<br />

[0.2 0.8 0.2 0.1],'Callback','cla','String','Buton prin apasare');<br />

hrs=uicontrol('Style','Radiobutton','Units','normalized','Po<strong>si</strong>tion', ...<br />

[0.6 0.8 0.15 0.1],'Callback','cla','String','Buton radio');<br />

hsl=uicontrol('Style','Sli<strong>de</strong>r','String','Potenţiometru liniar', ...<br />

'Units','normalized','Po<strong>si</strong>tion',[0.2 0.5 0.3 0.1],'Min',0,'Max',1);<br />

hpm=uicontrol('Style','Popup','String','hsv|hot|cool|gray', ...<br />

'Units','normalized','Po<strong>si</strong>tion',[0.2 0.2 0.25 0.1])<br />

hcb=uicontrol('Style','Checkbox','String','Caseta <strong>de</strong> control', ...<br />

'Units','normalized','Po<strong>si</strong>tion',[0.6 0.5 0.2 0.1],'Callback','figure');<br />

hed=uicontrol('Style','Edit','String','Caseta <strong>de</strong> editare', ...<br />

'Units','normalized','Po<strong>si</strong>tion',[0.6 0.15 0.2 0.05])


Crearea interfeţelor grafice interactive 427<br />

20.2. Crearea meniurilor <strong>pentru</strong> interfeţele grafice<br />

Pentru crearea unor meniuri cu acţiuni pre<strong>de</strong>finite, care se afişează în bara<br />

superioară <strong>de</strong> meniuri, se utilizează funcţia uimenu, care se apelează cu una dintre<br />

<strong>si</strong>ntaxele:<br />

h= uimenu('Nume proprietate','Valoare proprietate', ...);<br />

hsub= uimenu(h,'Nume proprietate','Valoare proprietate', ...).<br />

Funcţia uimenu, după cum se observă, acceptă perechile proprietate / valoare<br />

ca argumente <strong>de</strong> intrare. Fiecare opţiune a meniului poate fi la rândul ei un meniu,<br />

care afişează un submeniu, atunci când este selectată.<br />

Submeniurile sunt create prin apelarea funcţiei uimenu, având ca prim<br />

argument i<strong>de</strong>ntificatorul meniului principal. Dacă nu se specifică nici un<br />

i<strong>de</strong>ntificator al unui meniu existent, este creat un meniu principal, care se plasează<br />

în bara superioară <strong>de</strong> meniuri (la nivelul cel mai înalt).<br />

Proprietăţile obiectului meniu, <strong>de</strong>scrise în continuare, pot fi stabilite cu<br />

funcţia set şi afişate cu funcţia get.<br />

Aceste proprietăţi pot fi specificate la creare, prin inclu<strong>de</strong>rea perechilor<br />

nume/valoare proprietate sau ulterior, prin i<strong>de</strong>ntificarea obiectului şi folo<strong>si</strong>rea<br />

funcţiei set.<br />

Lista proprietăţilor acceptate, precum şi valorile po<strong>si</strong>bile ale fiecărei<br />

proprietăţi sunt prezentate mai jos.<br />

1. Accelerator - Caracter<br />

Această proprietate specifică combinaţia <strong>de</strong> caractere echivalentă acţiunii<br />

<strong>de</strong> apelare a unei opţiuni din meniu. Acceleratorul permite utilizatorului să<br />

selecteze o opţiune din meniu, prin tastarea combinaţiei <strong>de</strong> taste<br />

„Ctrl”+”Caracter”.<br />

2. CallBack - şir <strong>de</strong> caractere<br />

Această proprietate permite evaluarea oricărei expre<strong>si</strong>i Matlab, inclu<strong>si</strong>v<br />

nume <strong>de</strong> fişiere, <strong>de</strong> tip „m” sau funcţii, conţinută în şirul <strong>de</strong> caractere, la<br />

activarea opţiunii din obiectul meniu.<br />

3. Children - vector<br />

Copiii obiectului meniu sunt alte meniuri (numite submeniuri), iar<br />

i<strong>de</strong>ntificatorul conţine câte un vector <strong>pentru</strong> fiecare submeniu.<br />

4. Enable - on sau off sau inactive<br />

Această proprietate controlează o opţiune care se poate sau nu selecta.<br />

Dacă o opţiune nu se poate selecta, atunci eticheta acesteia este scrisă cu<br />

litere <strong>de</strong> culoare <strong>de</strong>schisă (estompat).<br />

5. Label - etichetă<br />

Această proprietate specifică textul etichetelor, etichetă, opţiunilor<br />

meniului.


428<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

6. Parent - i<strong>de</strong>ntificator<br />

Această proprietate returnează i<strong>de</strong>ntificatorul obiectului părinte, care poate<br />

fi un obiect figură sau obiect meniu, iar <strong>pentru</strong> crearea submeniurilor este<br />

absolut necesară setarea acestei proprietăţi.<br />

7. Po<strong>si</strong>tion - scalar<br />

Prin această proprietate se specifică localizarea obiectului meniu pe bara<br />

superioară, <strong>de</strong> la stânga la dreapta, funcţie <strong>de</strong> valoarea scalarului.<br />

8. Separator - on sau off<br />

Această proprietate permite separarea cu lini a fiecărei opţiuni a unui<br />

meniu, dacă este on sau fără separare, <strong>pentru</strong> off.<br />

9. Type - şir <strong>de</strong> caractere<br />

Această proprietate i<strong>de</strong>ntifică tipul <strong>de</strong> obiect grafic. Pentru obiectul<br />

interfaţă, şirul <strong>de</strong> caractere este întot<strong>de</strong>auna uicontrol.<br />

10. UserData matrice<br />

Proprietatea este orice matrice asociată obiectului, care poate să nu fie<br />

folo<strong>si</strong>tă, dar poate fi vizualizată folo<strong>si</strong>nd funcţia get.<br />

11. Vi<strong>si</strong>ble - on sau off<br />

Proprietatea <strong>de</strong>termină dacă obiectul <strong>de</strong> control al interfeţei este vizibil pe<br />

ecran, cazul on, sau nu este vizibil, cazul off. Valoarea implicită este on.<br />

Pentru exemplificare, pornind <strong>de</strong> la meniul existent al unei figuri, se adaugă<br />

un meniu principal cu eticheta Aplicaţii, care conţine trei opţiuni: Nou, Salvare şi<br />

Închi<strong>de</strong>re figură. Opţiunea Nou are două subdomenii: Figură nouă şi Fişier M nou.<br />

Secvenţa Matlab <strong>pentru</strong> aceasta este:<br />

f=uimenu('Label','Aplicaţii');<br />

n=uimenu(f,'Label','Nou');<br />

uimenu(f,'Label','Salvare','CallBack','save');<br />

uimenu(f,'Label','Închi<strong>de</strong> figură','CallBack','close');<br />

uimenu(n,'Label','Figura nouă','CallBack','figure');<br />

uimenu(n,'Label','Fişier M nou','CallBack','edit').<br />

20.3. Citirea interactivă a datelor <strong>de</strong> pe grafice<br />

Pentru citirea interactivă (cu mouse-ul) a datelor <strong>de</strong> pe graficele reprezentate<br />

pe ecran, se foloseşte funcţia ginput, care se apelează cu una dintre <strong>si</strong>ntaxele:<br />

• [x,y]=ginput(N) – returnează N puncte <strong>de</strong> pe figura curentă, ale căror<br />

coordonate sunt vectorii x şi y, poziţionând <strong>de</strong> fiecare dată, <strong>pentru</strong> un punct<br />

N, cursorul mouse-ului în punctul dorit şi apasând butonul acestuia <strong>pentru</strong><br />

confirmare, iar la terminarea introducerii celor N puncte, sunt returnaţi<br />

vectorii x şi y corespunzători acestor puncte;<br />

• [x,y]=ginput – permite introducerea unui număr neprecizat <strong>de</strong> puncte,<br />

operaţia încheindu-se prin apăsarea tastei „Enter”;


Crearea interfeţelor grafice interactive 429<br />

• [x,y,B]=ginput(N) sau [x,y,B]=ginput – returnează coordonatele datelor<br />

selectate (care pot fi N puncte), în vectorii x şi y, precum şi variabila B,<br />

care reprezintă butonul cu care a fost selectată data (1 <strong>pentru</strong> butonul din<br />

stânga, 3 <strong>pentru</strong> butonul din dreapta mouse-ului şi altceva <strong>pentru</strong> tastatură).<br />

Variabilele x şi y, în care au fost returnate aceste valori, se salvează cu funcţia<br />

save, ca orice variabilă a mediului <strong>de</strong> lucru Matlab.<br />

20.4. Selectarea interactivă a fişierelor citite<br />

Pentru selectarea interactivă a numelui şi locului <strong>de</strong> un<strong>de</strong> se citesc date sau<br />

programe Matlab, se utilizează funcţia uigetfile, care afişează o „casetă <strong>de</strong> dialog”.<br />

Funcţia uigetfile se apelează cu <strong>si</strong>ntaxa,<br />

[nume, cale] = uigetfile('filtrul','titlul casetei',X,Y)<br />

în care:<br />

• filtrul – parametrul ce <strong>de</strong>termină care fişiere sunt iniţial afişate în fereastra<br />

<strong>de</strong> dialog; spre exemplu, dacă acesta este '*.m', sunt listate toate fişierele<br />

Matlab având exten<strong>si</strong>a „m”;<br />

• titlul casetei – şir <strong>de</strong> caractere, care se afişează ca titlu al casetei <strong>de</strong> dialog;<br />

• X, Y – parametrii ce <strong>de</strong>finesc poziţia iniţială a casetei <strong>de</strong> dialog, în pixeli<br />

(nu toate <strong>si</strong>stemele acceptă această opţiune);<br />

• nume – şir <strong>de</strong> caractere în care este returnat numele fişierului selectat din<br />

caseta <strong>de</strong> dialog, iar dacă este întâlnită o eroare sau este selectat butonul<br />

Cancel, atunci nu mai există nici un nume;<br />

• cale – şir <strong>de</strong> caractere în care este returnată calea fişierului selectat din<br />

caseta <strong>de</strong> dialog, iar dacă este întâlnită o eroare sau este selectat butonul<br />

Cancel, atunci calea este stearsă din memorie.<br />

Dacă fişierul menţionat nu există, se afişează un mesaj <strong>de</strong> eroare şi controlul<br />

este returnat casetei <strong>de</strong> dialog. Utilizatorul poate introduce alt nume <strong>de</strong> fişier sau<br />

poate selecta butonul Cancel. Toţi parametrii funcţiei sunt opţionali, însă dacă unul<br />

este utilizat, atunci trebuie utilizaţi toţi ceilalţi.<br />

De exemplu,<br />

[num,cale]=uigetfile('*.m','SELECTEAZA'),<br />

produce o casetă <strong>de</strong> dialog asemanătoare cu „Open” din Word, având numele<br />

SELECTEAZĂ, ce permite modificarea directorului <strong>de</strong> căutare prin intermediul lui<br />

„Look in”.<br />

Dacă se selectează fişierul matlab.mat, atunci se obţine:<br />

nume =<br />

matlab.mat<br />

cale =<br />

C:\matlabR12\work\.


430<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

20.5. Stabilirea interactivă a fişierelor salvate<br />

Pentru stabilirea interactivă a numelui şi locului un<strong>de</strong> se vor salva date sau<br />

programe Matlab, se utilizează funcţia uiputfile, care afişează ,<strong>de</strong> asemenea, o<br />

casetă <strong>de</strong> dialog şi se poate apela cu <strong>si</strong>ntaxa,<br />

[nume, cale] = uiputfile('fişier iniţial','titlul casetei',X,Y)<br />

în care:<br />

• fişier iniţial – parametru ce precizează numele fişierului implicit, în care se<br />

salvează datele, iar dacă acesta este ,<strong>de</strong> exemplu, test.m, sunt listate toate<br />

fişierele Matlab, având exten<strong>si</strong>a „m”;<br />

• titlul casetei – şir <strong>de</strong> caractere care se afişează ca titlu al casetei <strong>de</strong> dialog;<br />

• X, Y – parametrii ce <strong>de</strong>finesc poziţia iniţială a casetei <strong>de</strong> dialog, în pixeli<br />

(nu toate <strong>si</strong>stemele acceptă această opţiune);<br />

• nume – şir <strong>de</strong> caractere în care este returnat numele fişierului selectat din<br />

caseta <strong>de</strong> dialog, iar dacă este întâlnită o eroare sau este selectat butonul<br />

Cancel, nu se returnează nimic;<br />

• cale – şir <strong>de</strong> caractere în care este returnată calea fişierului selectat din<br />

caseta <strong>de</strong> dialog, iar dacă este întâlnită o eroare sau este selectat butonul<br />

Cancel, nu se întoarce nimic.<br />

Dacă fişierul există, suprascrierea acestuia cu date noi se face numai dacă<br />

utilizatorul acceptă, prin selectarea butonului „YES”, concatenată cu o comandă <strong>de</strong><br />

salvare. Toţi parametrii funcţiei sunt opţionali, însă dacă unul este utilizat, atunci<br />

trebuie utilizaţi toţi ceilalţi.<br />

De exemplu,<br />

[num,cale]=uiputfile('*.m','Save'),<br />

produce o casetă <strong>de</strong> dialog asemănătoare cu „Open” din Word, având numele<br />

„Save”, ce permite modificarea directorului <strong>de</strong> căutare prin intermediul lui „Save<br />

in”. Dacă se selectează fişierul matlab.mat, atunci se obţine:<br />

nume =<br />

matlab.mat<br />

cale =<br />

C:\matlabR12\work\.<br />

20.6. Selectarea interactivă a fonturilor şi a culorilor<br />

Pentru selectarea interactivă a fonturilor utilizate <strong>de</strong> o aplicaţie Matlab, se<br />

utilizează funcţia uisetfont, care afişează o casetă <strong>de</strong> dialog cu nume specificat şi<br />

numele tuturor fonturilor utilizate <strong>de</strong> Windows şi se apelează cu <strong>si</strong>ntaxa:<br />

H=uisetfont(HIN, 'titlul casetei').<br />

Această funcţie se utilizează la selectarea fonturilor, ca intrări <strong>pentru</strong><br />

obiectele grafice.<br />

Parametrii sunt opţionali şi pot fi specificaţi în orice ordine. Dacă este utilizat<br />

HIN, atunci trebuie să se specifice i<strong>de</strong>ntificatorul obiectului grafic text sau axe.


Crearea interfeţelor grafice interactive 431<br />

Proprietăţile curente ale fonturilor, atribuite acestui obiect, sunt utilizate <strong>pentru</strong> a<br />

iniţializa caseta <strong>de</strong> dialog a fonturilor.<br />

Dacă parametrul titlul casetei este utilizat, acesta este afişat ca nume al<br />

casetei <strong>de</strong> dialog, iar argumentul <strong>de</strong> ieşire ,H, este i<strong>de</strong>ntificatorul obiectului grafic.<br />

Dacă HIN este specificat, H este i<strong>de</strong>ntic cu HIN, iar dacă nu este specificat, se<br />

creează un nou text, prin selectarea proprietăţilor fonturilor şi se returnează<br />

i<strong>de</strong>ntificatorul acestuia.<br />

Dacă este întâlnită o eroare sau este selectat butonul Cancel, i<strong>de</strong>ntificatorul H<br />

este setat la 0.<br />

De exemplu,<br />

h =uisetfont(gca,'Fonturi')<br />

<strong>de</strong>schi<strong>de</strong> o casetă <strong>de</strong> dialog, într-o figură, <strong>de</strong>numită Fonturi, în care sunt<br />

casete <strong>pentru</strong> selectarea numelui fontului (Font), a stilului (Font Style), dimen<strong>si</strong>unii<br />

acestuia (Size), precum şi casetă <strong>de</strong> selectare (OK) sau anulare (Cancel). De<br />

exemplu, în fişierul <strong>de</strong> lucru poate să apară:<br />

h =<br />

FontName: 'Times New Roman'<br />

FontUnits: 'points'<br />

FontSize: 12<br />

FontWeight: 'normal'<br />

FontAngle: 'italic'.<br />

Pentru selectarea interactivă a culorilor utilizate <strong>de</strong> o aplicaţie Matlab, se<br />

utilizează funcţia uisetcolor, care afişează o casetă <strong>de</strong> dialog cu numele specificat<br />

şi cu toate culorile gestionate <strong>de</strong> Windows şi se apelează cu <strong>si</strong>ntaxa:<br />

C=uisetcolor(ARG, 'titlul casetei').<br />

Această funcţie se utilizează la selectarea culorilor, ca intrări <strong>pentru</strong> obiectele<br />

grafice. Parametrii sunt opţionali şi pot fi specificaţi în orice ordine.<br />

Parametrul ARG este fie un i<strong>de</strong>ntificator al unui obiect grafic, fie un triplet<br />

RGB (<strong>de</strong> exemplu [1 0 0] <strong>pentru</strong> roşu). În ambele cazuri, culoarea specificată este<br />

utilizată la iniţializarea casetei <strong>de</strong> dialog. Dacă nu este utilizată iniţializarea, atunci<br />

culoarea folo<strong>si</strong>tă este negru.<br />

Dacă parametrul titlul casetei este utilizat, acesta este afişat ca nume al<br />

casetei <strong>de</strong> dialog, iar argumentul <strong>de</strong> ieşire ,C, este tripletul RGB selectat. Dacă<br />

parametrul <strong>de</strong> intrare ARG este i<strong>de</strong>ntificator, culoarea obiectului grafic este stabilită<br />

la culoarea RGB selectată.<br />

Dacă este întâlnită o eroare sau este selectat butonul Cancel, i<strong>de</strong>ntificatorul H<br />

este setat la 0.<br />

Pentru comanda,<br />

Ca=uisetcolor(gca,'Fondul figurii'),<br />

pe ecran apare caseta <strong>de</strong> dialog cu titlul Fondul figurii, care permite utilizatorului<br />

alegerea interactivă a culorii, <strong>pentru</strong> fondul figurii.<br />

De menţionat că alegerea culorilor se face <strong>de</strong>schizând fereastra unei noi<br />

figuri şi că se poate selecta şi fondul axelor.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!