Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Handle Graphics si Interfete Grafice in MATLAB (GUI)

Matlab



+ Font mai mare | - Font mai mic



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.

1. Graficele privite ca obiecte. Ierarhia obiectelor

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.

Radacina (Root)

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 figura (Figure)

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 de tip Uicontrol

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 de tip Uimenu

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 (Axes)

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.

Obiectele de tip Imagine (Image)

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".

Obiectele de tip lumina (luminozitate) (Light)

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 (Line)

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.

Obiectele de tip Patch

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.

Obiectele de tip dreptunghi (Rectangle)

Aceste obiecte sunt arii 2-D umplute, cu o forma care poate varia de la un dreptunghi la o elipsa.

Obiectele de tip suprafata (Surface)

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

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.

2. Proprietatile obiectelor grafice

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

BusyAction

Controleaza modul in care MATLAB-ul apeleaza rutinele de intreruperi definite pentru un anumit obiect.

ButtonDownFcn

Rutina executata la apasarea unui buton.

Children

Manipuleaza toate obiectele copil ale obiectului.

Clipping

Activare/dezactivare mod taiere.

CreateFcn

Rutina executata atunci cand acest tip de obiect este creat.

DeleteFcn

Rutina executata atunci cand se da o comanda de distrugere (stergere) a obiectului.

HandleVisibility

Permite controlul obiectului de la linia de comanda sau din rutine de apelare.

Interruptible

Determina cand o rutina poate fi intrerupta printr-o rutina invocata ulterior.

Parent

Parintele obiectului.

Selected

Indica daca obiectul este selectat.

SelectionHighlight

Specifica daca este indicata starea de selectare.

Tag

Eticheta a unui obiect specificata de utilizator.

Type

Tipul obiectului (figura, linie, text etc.)

UserData

Orice data care se doreste a fi asociata obiectului.

Visible

Determina daca obiectul este vizibil sau nu.

3. Functii de generare a obiectelor grafice

Fiecare obiect grafic, mai putin radacina, are o functie de generare corespondenta:

Functie

Descriere obiect

axes

Sistem de coordonate carteziene care scaleaza si orienteaza obiectele copil: imagine, lumina, linie, patch, suprafata si text.

figure

Fereastra pentru afisare grafica.

image

Imagine 2-D definita prin indicarea hartii culorilor sau valori RGB. Datele pot fi pe 8 biti sau dubla precizie.

light

Sursa directionata de lumina, localizata intre axe, care influenteaza suprafetele si obiectele patch.

line

Linie formata prin conectarea coordonatelor prin segmente drepte intr-o secventa specificata.

patch

Forma poligonala creata prin interpretarea fiecarei coloane din matricile de coordonate ca un poligon separat.

rectangle

Arie 2-D umpluta (plina), cu forma de la dreptunghi la elipsa.

surface

Suprafata cu fete dreptunghiulare, definite prin interpretarea elementelor matricei ca inaltimi deasupra planului.

text

Sir de caractere localizat in sistemul de coordonate al axelor.

uicontextmenu

Meniu context ce poate fi asociat cu alt obiect grafic.

uicontrol

Interfata utilizator programabila (butoane, liste etc.).

uimenu

Meniu programabil care apare in partea superioara a figurii.

Toate functiile de generare a obiectelor au un format similar

:

handle=function('propertyname',propertyvalue,)

Exemplu de generare a obiectelor grafice

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 3984
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved