CATEGORII DOCUMENTE |
Handle Graphics si Interfete Grafice in MATLAB (GUI)
Crearea si manipularea graficelor in MATLAB se realizeaza cu ajutorul unui sistem de grafica orientata pe obiecte denumit Handle Graphics. Acest sistem furnizeaza componentele necesare generarii unor grafice: comenzi de trasare a liniilor, textelor, grafice 3-D, poligoane etc. precum si instrumente interactive de tipul meniurilor, butoanelor, ferestre de dialog etc.
Cu Handle Graphics se pot manipula direct elementele grafice (asa cum o fac functiile MATLAB de nivel inalt descrise in paragraful anterior) pe doua cai: fie de la linia de comanda MATLAB fie cu ajutorul unor fisiere MATLAB create special.
Obiectele grafice sunt de fapt elementele grafice de baza utilizate de MATLAB pentru afisarea datelor si pentru crearea Interfetelor Grafice Utilizator (Graphical User Interfaces - GUI). Fiecare stare a unui obiect este asociata unui identificator unic numit handle, care poate fi folosit pentru manipularea caracteristicilor obiectului respectiv (caracteristici care sunt numite proprietatile obiectului).
Obiectele grafice sunt structurate intr-o ierarhie pe trei nivele:
Ierarhia este bazata pe interdependentele dintre diferitele obiecte grafice. De exemplu, pentru trasarea unui obiect linie, MATLAB utilizeaza un obiect de tip axe pentru orientarea si furnizarea unui sistem de referinta liniei. Obiectul de tip axe are nevoie la randul sau de o fereastra grafica pentru afisarea liniei.
Obiectele grafice sunt interdependente si prin urmare un ecran grafic contine o mare varietate de obiecte care impreuna furnizeaza o imagine sau un grafic care are o semnificatie clara. Pentru exemplificare se poate analiza urmatoarea fereastra grafica, fereastra care contine mai multe obiecte grafice.
Fiecare tip de obiect grafic are o functie
generatoare corespunzatoare, functie care este
utilizata pentru crearea unui obiect din clasa respectiva de obiecte.
Functiile de generare a obiectelor au
aceleasi nume ca si obiectele pe care le creeaza (functia text
pentru obiecte de tip text,
functia figure
pentru obiecte de tip figura etc.).
Tipurile de obiecte grafice sunt descrise pe scurt in continuare.
In fruntea ierarhiei este obiectul radacina, care corespunde cu ecranul calculatorului. Acest obiect nu trebuie creat, el exista, este unic si toate celelalte obiecte sunt descendentii acestuia. Se pot modifica anumite proprietati ale obiectului radacina.
Obiectele de tip figura sunt ferestre individuale pe ecranul radacina pe care MATLAB-ul afiseaza graficele. Nu exista limita pentru numarul de ferestre grafice (decat cele datorate limitelor calculatorului). Toate obiectele figura sunt "copii" ai radacinii si celelalte obiecte grafice sunt descendenti ai figurilor.
Obiectele Uicontrol sunt elemente de control ale interfetei utilizator care executa subrutine de apel atunci cand utilizatorul activeaza un obiect. Exista mai multe stiluri de control cum ar fi butoane, liste etc. Fiecare astfel de instrument este proiectat sa accepte un anumit tip de informatie de la utilizator. De exemplu, listele sunt de obicei folosite pentru pentru furnizarea unei liste de nume, din care utilizatorul poate selecta unul sau mai multe articole.
Obiectele Uicontrol pot fi utilizate in diferite combinatii pentru construirea unor ecrane de control si a unor ferestre de dialog. In exemplul urmator sunt prezentate astfel de combinatii: meniuri "pop-up", ferestre de tip text editabile, ferestre de verificare (check boxes), butoane, text static, cadre etc.
Obiectele Uicontrol sunt copiii obiectelor de tip figura si sunt independente de obiectele de tip axe.
Obiectele Uimenu sunt meniuri "pull-down" care executa rutine de apelare atunci cand utilizatorul selecteaza un articol individual dintr-un meniu. MATLAB-ul plaseaza obiectele Uimenu pe bara de meniuri a ferestrei grafice, la dreapta meniurilor existente definite de sistem.
Imaginea urmatoare arata partea de sus a unei figuri MS-Windows care are definite trei meniuri de top Uimenu (intitulate Workspace, Figure, si Axes). Doua niveluri de submeniuri sunt vizibile in meniul Workspace.
Obiectele Uimenu sunt descendente directe ale obiectelor de tip figura si deci sunt independente de axe.
Obiectele de tip axe definesc o regiune intr-o fereastra de tip figura si orienteaza descendentii lor spre aceasta regiune. Obiectele de tip axe sunt copiii obiectelor de tip figura si sunt parintii obiectelor de tip imagine, luminozitate, linie, patch, suprafata si text.
Toate functiile care traseaza grafice (plot, surf, mesh, bar etc.) creeaza un obiect de tip axe daca nu exista deja unul.
Uicontrol si Uimenu nu sunt descendenti ai obiectelor de tip axe.
O imagine in MATLAB consta intr-o matrice de date si o harta a culorilor. Exista trei tipuri de baza de imagini care difera in functie de modul in care elementele matricii de date sunt interpretate ca pixeli color - indexati, intensitate si "truecolor".
Aceste obiecte definesc surse de lumina care influenteaza toate obiectele de tip patch si suprafata dintre axe. Se pot seta proprietatile care determina tipul sursei de lumina, culoarea, localizarea si altele.
Obiectele de tip linie sunt elemente grafice de
baza care sunt folosite pentru a genera cele mai multe plotari 2-D
si unele 3-D. Functiile de nivel inalt plot, plot3, loglog
etc. genereaza obiecte
de tip linie. Sistemul de coordonate al obiectului
parinte - obiectul de tip axe - pozitioneaza si
orienteaza linia.
Aceste obiecte sunt
contururi poligonale cu muchii (laturi), umplute. Un
singur obiect patch poate contine mai multe fete, fiecare
colorata independent. Functiile fill, fill3, contour3
creeaza obiecte patch. Ca si in cazul liniei, sistemul de coordonate al obiectului
parinte (axele) pozitioneaza si orienteaza obiectul
patch.
Aceste obiecte sunt arii 2-D umplute, cu o forma care poate varia de la un dreptunghi la o elipsa.
Obiectele de tip Surface sunt reprezentari 3-D
ale matricilor de date create prin plotarea fiecarui element al matricii
ca o inaltime deasupra planului x-y. MATLAB-ul
poate trasa suprafete pline, colorate sau doar o retea de linii
(mesh) care conecteaza punctele respective. Sistemul
de coordonate al axelor pozitioneaza si orienteaza obiectul
de tip suprafata. Functiile de nivel inalt pcolor, surf, mesh
genereaza obiecte de
tip suprafata.
Obiectele de tip text sunt de fapt siruri de
caractere. Sistemul de coordonate al axelor pozitioneaza
textul. Functiile de nivel inalt title, xlabel, ylabel, zlabel, gtext
genereaza obiecte de tip text.
Proprietatile obiectelor grafice determina aspectul si comportamentul acestora. Proprietatile includ informatii generale (tipul obiectului, parinte, copii, daca obiectul este vizibil etc.) si informatii specifice unei anumite clase particulare de obiecte.
MATLAB-ul organizeaza informatiile intr-o ierarhie si salveaza aceste informatii in proprietati ale obiectelor. De exemplu, proprietatile radacinii contin identificatorul (handle) figurii curente si locatia curenta a pointerului (cursorului), proprietatile figurii contin liste cu descendentii si evenimentele din fereastra, proprietatile axelor contin informatii despre cum fiecare din obiectele copil foloseste harta culorilor etc.
Valoarea curenta a oricarei proprietati poate fi aflata, iar unele valori pot fi modificate. Valoarea unei proprietati este aplicata numai unui obiect particular si nu intregii clase de obiecte. Se pot seta valori implicite care sa fie valabile pentru toate obiectele create ulterior.
Anumite proprietati sunt comune tuturor obiectelor grafice:
Proprietate |
Informatii continute |
|
Controleaza modul in care MATLAB-ul apeleaza rutinele de intreruperi definite pentru un anumit obiect. |
|
Rutina executata la apasarea unui buton. |
|
Manipuleaza toate obiectele copil ale obiectului. |
|
Activare/dezactivare mod taiere. |
|
Rutina executata atunci cand acest tip de obiect este creat. |
|
Rutina executata atunci cand se da o comanda de distrugere (stergere) a obiectului. |
|
Permite controlul obiectului de la linia de comanda sau din rutine de apelare. |
|
Determina cand o rutina poate fi intrerupta printr-o rutina invocata ulterior. |
|
Parintele obiectului. |
|
Indica daca obiectul este selectat. |
|
Specifica daca este indicata starea de selectare. |
|
Eticheta a unui obiect specificata de utilizator. |
|
Tipul obiectului (figura, linie, text etc.) |
|
Orice data care se doreste a fi asociata obiectului. |
|
Determina daca obiectul este vizibil sau nu. |
Fiecare obiect grafic, mai putin radacina, are o functie de generare corespondenta:
Functie |
Descriere obiect |
|
Sistem de coordonate carteziene care scaleaza si orienteaza obiectele copil: imagine, lumina, linie, patch, suprafata si text. |
figure |
Fereastra pentru afisare grafica. |
|
Imagine 2-D definita prin indicarea hartii culorilor sau valori RGB. Datele pot fi pe 8 biti sau dubla precizie. |
|
Sursa directionata de lumina, localizata intre axe, care influenteaza suprafetele si obiectele patch. |
|
Linie formata prin conectarea coordonatelor prin segmente drepte intr-o secventa specificata. |
|
Forma poligonala creata prin interpretarea fiecarei coloane din matricile de coordonate ca un poligon separat. |
|
Arie 2-D umpluta (plina), cu forma de la dreptunghi la elipsa. |
|
Suprafata cu fete dreptunghiulare, definite prin interpretarea elementelor matricei ca inaltimi deasupra planului. |
|
Sir de caractere localizat in sistemul de coordonate al axelor. |
|
Meniu context ce poate fi asociat cu alt obiect grafic. |
|
Interfata utilizator programabila (butoane, liste etc.). |
|
Meniu programabil care apare in partea superioara a figurii. |
Toate functiile de generare a obiectelor au un format similar
:
handle=function('propertyname',propertyvalue,)
In exemplul urmator este evaluata o
functie matematica si sunt create trei obiecte grafice folosind
valorile proprietatilor specificate ca argumente ale comenzilor figure
, axes
si surface
, celelalte
proprietati avand valori implicite.
[x,y] = meshgrid
([-2:.4:2]);
Z = x.*exp(-x.^2-y.^2);
fh=figure
('Position',[350 275 400 300],'Color','w');
ah=axes
('Color',[.8 .8 .8],'XTick',[-2 -1 0 1 2],
'YTick',[-2 -1 0 1 2]);
sh = surface
('XData',x,'YData',y,'ZData',Z,
'FaceColor',get(ah,'Color')+.1,
'EdgeColor','k','Marker','o',
'MarkerFaceColor',[.5 1 .85]);
Functia surface
nu
foloseste o vedere 3-D
ca functia de nivel inalt surf
. Se poate schimba vederea intr-una 3-D cu camera commands sau cu comanda view
:
view(3)
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 3984
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved