Informatyka. Wykład /2018z

Podobne dokumenty
PODSTAWY TWORZENIA WYKRESÓW ORAZ HANDLE GRAPHICS

Interfejs graficzny Matlaba

MATLAB Prowadzący: dr hab. inż. Marek Jaszczur Poziom: początkujący

Matlab - tworzenie graficznego interfejsu użytkownika GUI - Graphic User Interface

Kier. MTR Programowanie w MATLABie Laboratorium

Wykresy. Wykresy i grafika w Matlabie 11/4/2013. sin(θ ) Wykresy 2D Wykresy 3D Animacje i filmy Tworzenie interfejsu uŝytkownika GUI

Matlab II skrypty, funkcje, wizualizacja danych. Piotr Wróbel Pok. B 4.22

Ćwiczenie 7. Matlab formularze, komponenty

Lekcja 1: Origin GUI GUI to Graficzny interfejs użytkownika (ang. GraphicalUserInterface) często nazywany też środowiskiem graficznym

Tytuł: GRAPHER Podręcznik użytkownika ISBN: Autor: Zbigniew Galon Rok wydania: 2014 Stron: 500 Wydawca: Gambit COiS Sp. z o.o.

Ćwiczenie 6. Matlab formularze, komponenty

Podstawowe operacje graficzne.

Wizualizacja funkcji w programie MATLAB

1. Opis okna podstawowego programu TPrezenter.

Wprowadzenie do programowania obiektowego

Gambit Centrum Oprogramowania i Szkoleń Sp. z o.o.

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS

Laboratorium Algorytmy Obliczeniowe. Lab. 9 Prezentacja wyników w Matlabie

Elementy okna MatLab-a

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS

Pakiety matematyczne. Matematyka Stosowana. dr inż. Krzysztof Burnecki

Informatyka. Wykład 5. Witold Dyrka 16/04/2012

Wykresy i obiekty graficzne w Matlabie

Qtiplot. dr Magdalena Posiadała-Zezula

Wstęp do GUI w Matlabie.

Scilab - podstawy. Wersje instalacyjne programu Scilab mogą zostać pobrane ze strony

TWORZENIE WYKRESÓW (1)

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Wprowadzenie do Scilab: funkcje i wykresy

Programowanie: grafika w SciLab Slajd 1. Programowanie: grafika w SciLab

Tytu : GRAPHER Podr cznik u ytkownika ISBN: Autor: Zbigniew Galon Rok wydania: 2009 Stron: 408 Wydawca: Gambit COiS Sp. z o.o.

Laboratorium MATLA/MTL

INSTRUKCJA OBSŁUGI PROGRAMU LOGGER PRO

Graficzna prezentacja wyników

Przywracanie parametrów domyślnych. Przycisnąć przycisk STOP przez 5 sekund. Wyświetlanie naprzemienne Numer parametru Wartość parametru

KATEGORIA OBSZAR WIEDZY

Po naciśnięciu przycisku Dalej pojawi się okienko jak poniżej,

Sylabus Moduł 4: Grafika menedżerska i prezentacyjna

1. Umieść kursor w miejscu, w którym ma być wprowadzony ozdobny napis. 2. Na karcie Wstawianie w grupie Tekst kliknij przycisk WordArt.

Usługi Informatyczne "SZANSA" - Gabriela Ciszyńska-Matuszek ul. Świerkowa 25, Bielsko-Biała

Tablet bezprzewodowy QIT30. Oprogramowanie Macro Key Manager

Dodanie nowej formy do projektu polega na:

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

3.7. Wykresy czyli popatrzmy na statystyki

Grafika dwu- i trójwymiarowa MATLABie

Krótka instrukcja opracowania danych w programie SciDAVis v. 1-D013-win

MATLAB ŚRODOWISKO MATLABA OPIS, PODSTAWY

Dodawanie grafiki i obiektów

Laboratorium MATLA. Ćwiczenie 5. Elementy programowania obiektowego. Graficzny Interfejs Użytkownika (GUI)

Metodyka programowania. Komponent Chart

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.1

Wartości x-ów : Wartości x ów można w Scilabie zdefiniować na kilka sposobów, wpisując odpowiednie polecenie na konsoli.

Tworzenie prezentacji w MS PowerPoint

Instrukcja obsługi programu Do-Exp

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

Ćwiczenia nr 4. Arkusz kalkulacyjny i programy do obliczeń statystycznych

Sylabus Moduł 3: Arkusze kalkulacyjne

Laboratorium programowania urządzeń mobilnych

Program współpracuje z : Windows XP, Powerdraft 2004, v8, XM, Microstation 2004, v8, XM.

TITAN 2.0. Analiza czasowo- przestrzenna. Opis zmian wprowadzonych do wersji 2.0 w odniesieniu do wersji 1.0

Spis treści. Lekcja 1: PowerPoint informacje podstawowe 1. Lekcja 2: Podstawy pracy z prezentacjami 36. Umiejętności do zdobycia w tej lekcji 36

Prezentacja multimedialna MS PowerPoint 2010 (podstawy)

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows XP

System wizyjny OMRON Xpectia FZx

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.3

AutoCAD LT praca na obiektach rastrowych i nakładanie barw z palety RGB na rysunki.

Tworzenie szablonów użytkownika

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.3

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

Rozdział 8 WYNIKI ANALIZY SPIS TREŚCI. I. ULEPSZONY INTERFEJS SCADA Pro II. OPIS INTERFEJSU SCADA Pro 1. Wyniki Deformacji

Architektura interfejsu użytkownika

Viszio. SZARP v3.1. Adam Smyk. 1. Uruchamianie programu. SZARP

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

Rys. 3. Kod elementów na stronie po dodaniu kontrolek podstawowych.

POMOC / INSTRUKCJA OBSŁUGI

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS

III. Przebieg ćwiczenia. 1. Generowanie i wizualizacja przebiegów oraz wyznaczanie ich podstawowych parametrów

Instrukcja korzystania ze skryptu kroswalidacja.py

Podstawy MATLABA, cd.

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.1

Lista wprowadzonych zmian w systemie Vario v. 3.3 od wydania do wydania

Edytor tekstu OpenOffice Writer Podstawy

Języki Modelowania i Symulacji 2018 Wprowadzenie: MATLAB Wykład 2

Programowanie w środowisku graficznym GUI

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

P&I Scout Pro Wygodne i proste tworzenie raportów

Część I Rozpoczęcie pracy z usługami Reporting Services

Instrukcja użytkownika ARSoft-WZ3

Wprowadzenie (17) Część I. Makra w Excelu - podstawy (23)

Grafika w Matlabie. Wykresy 2D

Google Earth. Co to jest Google Earth? Co to jest KML? Skąd można pobrać Google Earth?

ABC Excel 2016 PL / Witold Wrotek. Gliwice, cop Spis treści

imei CYFROWE PRZETWARZANIE SYGNAŁÓW Laboratorium Temat: Tworzenie aplikacji w środowisku LabWindows/CVI Instytut Metrologii, Elektroniki i Informatyki

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

Transkrypt:

Informatyka Wykład 4 2017/2018z

Plan Podstawy tworzenia wykresów Obiekty graficzne i ich hierarchia Interfejs graficzny - Graphical User Interface (GUI) Elementy GUI GUI Development Environment GUIDE Funkcje i przekazywanie zmiennych w GUI (Zasady projektowania efektywnych interfejsów graficznych)

Wizualizacja danych w MATLABIE Więcej na przykładowych wizualizacji na http://www.mathworks.com/discovery/gallery.html

Wykresy liniowe 2D - plot plot(x, y, LineSpec) Dane do wykreślenia Specyfikacja linii x=randn(20,2)*sqrt(2)+0.5; pos_x=cumsum(x); plot(pos_x(:,1), pos_x(:,2), '--ms'); LineSpec Line Specification string Styl linii Kolor Kształt znacznika

Specyfikacja Linii Symbol Styl Linii Symbol Kolor Symbol Znacznik '-' '--' ':' '-.' solid dashed dotted dash dot r g b c m y k w Red Green Blue Cyan Magenta Yellow Black White '+' 'o' '*' '.' 'x' 'square' or 's' 'diamond' or 'd' '^' 'v' Plus sign Circle Asterisk Point Cross Square Diamond Upward-pointing triangle Downward-pointing triangle '>' Right-pointing triangle '<' Left-pointing triangle 'pentagram' or 'p' Five-pointed star (pentagram) 'hexagram' or 'h' Six-pointed star (hexagram)

Specyfikacja Linii Symbol Styl Linii Symbol Kolor Symbol Znacznik '-' '--' ':' '-.' solid dashed dotted dash dot r g b c m y k w Red Green Blue Cyan Magenta Yellow Black White '+' 'o' '*' '.' 'x' 'square' or 's' 'diamond' or 'd' '^' 'v' Plus sign Circle Asterisk Point Cross Square Diamond Upward-pointing triangle Downward-pointing triangle plot(pos_x(:,1), pos_x(:,2), '--ms'); '>' Right-pointing triangle '<' Left-pointing triangle plot(pos_x(:,1), pos_x(:,2), 's--m'); % kolejność nie ma znaczenia 'pentagram' or 'p' Five-pointed star (pentagram) 'hexagram' or 'h' Six-pointed star (hexagram)

Inne parametry w plot plot(x, y, LineSpec, ParName1, ParVal1, ParName2, ParVal2, ) Para1: Nazwa - Wartość Para2: Nazwa - Wartość plot(pos_x(:,1),pos_x(:,2),'--ms','markersize', 7, 'MarkerEdge', 'k',... 'MarkerFace', 'g', 'LineWidth',2); Przypomnienie z Wykladu 3: s = struct( NazwaPola,wartosc1, nazwapola2, wartosc2)

Obiekty graficzne Wszystkie elementy graficzne w MATLABIE to obiekty graficzne: Okna Osie Tekst na wykresach Linie Każdy z obiektów ma pola/cechy, których wartości można sprawdzić i zmienić: Interaktywnie w oknie wykresu get(handle, ParName ) pobranie wartości pola (o tym za chwilę) set(handle, ParName, ParVal ) ustawienie wartości (o tym za chwilę)

Interaktywna modyfikacja wykresów Kliknąć kursor wyboru Wybrać obiekt i modyfikować Więcej cech

Interaktywna modyfikacja wykresów Można zapisać wykres: - *.bmp, *.jpg, *.tiff - *.fig wykres MATLAB Można wygenerować skrypt Wybrać obiekt i modyfikować Więcej cech

Opis wykresów title('bladzacy Student', 'FontSize',14,'FontWeight','bold') %tytul z parametrami axis([0 14-2 16]) %ustawia zakresy osi xlabel('os X [m]','fontsize', 12) %ustawiaja tytul osi i ylabel('os Y [m]', 'FontSize', 12) %parametry legend('student 1','Location','northwest') %Generuje legende

Wyświetlanie kilku zestawów danych (1) Kilka krzywych na jednym wykresie plot(pos_x(:,1),pos_x(:,2),'--ms', pos_x2(:,1),pos_x2(:,2),':ob'); Student 1 Student 2 plot(pos_x(:,1),pos_x(:,2),'--ms','markersize',7, 'MarkerEdge','k 'MarkerFace', 'g','linewidth', 2); hold on plot(pos_x2(:,1), pos_x2(:,2), ':ob', 'MarkerSize', 7, 'MarkerEdge', 'k', 'MarkerFace', 'r', 'LineWidth', 2); hold off Hold on/off

Wyświetlanie kilku zestawów danych (2) Kilka wykresów w jednym oknie: subplot(liczbawierszy, LiczbaKolumn, NumerPozycji) (2,1,1) figure %otwiera nowe okno subplot(2,1,1); plot(pos_x(:,1),pos_x(:,2),'--ms','markersize',7,... 'MarkerEdge','k','MarkerFace','g','LineWidth',2); (2,1,2) subplot(2,1,2); plot(pos_x2(:,1),pos_x2(:,2),':ob','markersize',7,... 'MarkerEdge','k', 'MarkerFace','r','LineWidth',2);

Wykresy 2-wymiarowe (1) Punktowe i liniowe plot - wykres liniowy 2-wym. we współrzędnych kartezjańskich plotyy - wykres liniowy 2-wym. z dwoma osiami wartości semilogx - wykres liniowy 2-wym. z osią X w skali logarytmicznej semilogy - wykres liniowy 2-wym. z osią Y w skali logarytmicznej loglog - wykres liniowy 2-wym. z osiami X i Y w skali logarytmicznej line - dodaje linię do wykresu liniowego scatter - wykres punktowy (np. wizualizacja korelacji) polar - wykres we współrzędnych polarnych Slajd W. Dyrka, Informatyka Wykład2, 2012

Wykresy 2-wymiarowe (2) Wizualizacja danych area - wykres powierzchniowy bar, barh - wykres słupkowy wertykalny i horyzontalny bar3, bar3h - wykresy słupkowe przestrzenne pie, pie3 - wykres kołowy płaski i przestrzenny ribbon - wykres wstążkowy (liniowy przestrzenny) hist histogram stairs - wykres schodkowy dla danych dyskretnych stem - wykres łodyga liście dla danych dyskretnych Slajd W. Dyrka, Informatyka Wykład2, 2012

Wykresy pseudo 3D Funkcje pcolor, countour, contourf, są dwuwymiarowe, ale za pomocą barwy reprezentowany jest trzeci wymiar. Przygotowanie siatki do obliczeń x = (-2:.2:2); y = (-1.5:.2:1.5)'; [X,Y] = meshgrid(x, y); F = X.* exp(-x.^2 - Y.^2); figure subplot(1,3,1); pcolor(x,y,f), title('pcolor') subplot(1,3,2);contour(x,y,f), title('contour') subplot(1,3,3);contourf(x,y,f), title('contourf')

Wykresy 3D Wersje wykresów 2-wymiarowych plot3 - wykres liniowy 3-wym. we współrzędnych kartezjańskich scatter3 - wykres punktowy w przestrzeni 3-wym. stem3 - wykres łodyga liście dla danych dyskretnych (3-wym.) contour3 - wykres izoliniowy w przestrzeni 3-wym. Wykresy siatkowe i powierzchniowe mesh, meshz - wykres siatkowy i siatkowy z kurtyną meshc - wykres siatkowo-konturowy surf - wykres powierzchniowy surfc - wykres powierzchniowo-konturowy Slajd W. Dyrka, Informatyka Wykład2, 2012

Wykresy siatkowe i powierzchniowe x = (-2:.2:2); y = (-1.5:.2:1.5)'; [X,Y] = meshgrid(x, y); F = X.* exp(-x.^2 - Y.^2); Obliczenia takie jak przy wykresach pseudo3d subplot(2,2,1), mesh(x,y,f), title('mesh') subplot(2,2,2), meshz(x,y,f), title('meshz') subplot(2,2,3), surf(x,y,f), title('surf') subplot(2,2,4), surfc(x,y,f), title('surfc'), shading flat % shading flat % - usuwa linie siatki

Animacje alpha=10:5:80; g=10; V_0=20; t=0:0.1:5; % kat w stopniach %Przyspieszenie % Predkosc poczatkowa %Ustalenie czasu UWAGA! Kod celowo napisany w sposób nieefektywny! for k=1:length(alpha) V_0y(k) = sind(alpha(k))*v_0; %skladowa y (pionowa) predkosci poczatkowej, sind - sinus z argumentem w stopniach V_0x(k)= cosd(alpha(k)).*v_0; %skladowa x (pozioma) predkosci poczatkowej for w=1:length(t) y(w,k)=v_0y(k).*t(w)-(g*t(w).^2)/2; % ruch w kierunku osi y (wznoszenie i opadanie); end end x(w,k)=v_0x(k).*t(w); % ruch w kierunku osi x for k=1:length(alpha) plot(x(:,k),y(:,k)) axis([0 40 0 20]); animacja(k) = getframe; % tworzy ramke z wykresu/rysunku end movie(animacja)

Obiekty graficzne Wszystkie elementy graficzne w MATLABIE to obiekty graficzne: Okna Osie Tekst na wykresach Linie Każdy z obiektów ma pola/cechy, których wartości można sprawdzić i zmienić: Interaktywnie w oknie wykresu get(handle, ParName ) pobranie wartości pola set(handle, ParName, ParVal ) ustawienie wartości handle -> uchwyt w MATLAB 2014a i starszych!!!

Obiekty graficzne Wszystkie elementy graficzne w MATLABIE to obiekty graficzne: Okna Osie Tekst na wykresach Linie Każdy z obiektów ma pola/cechy, których wartości można sprawdzić i zmienić: Interaktywnie w oknie wykresu get(object, ParName ) pobranie wartości pola object.parname set(object, ParName, ParVal ) ustawienie wartości object.parname=parval w MATLAB 2014b i nowszych!!!

Uchwyty do obiektów graficznych Do obiektów graficznych odwołujemy się przez uchwyty (ang. handles) Uchwyty to zmienne typu double Uchwyty są tworzone razem z obiektem Pozostają w pamięci przez czas istnienia obiektu W wersjach <= MATLAB 2014a N=50; krokixy = randn(n,2); posxy=[0 0 ; cumsum(krokixy)]; okno=figure; trj=plot(posxy(:,1),posxy(:,2),'-ms'); osie=gca; akt_okno=gcf; %otwarcie nowego okna; uchwyt okno % utworzenie wykresu; uchwyt trj % pobranie uchwytu osi (gca -> get current axes) % pobranie uchwytu aktualnego okna (gcf -> get current figure)

Uchwyty do obiektów graficznych Do obiektów graficznych odwołujemy się przez uchwyty (ang. handles) Uchwyty to zmienne typu double obiekt graficzny Uchwyty są tworzone razem z obiektem Pozostają w pamięci przez czas istnienia obiektu W wersjach >= MATLAB 2014b Uchwyty do obiektów SĄ TYMI OBIEKTAMI!!! N=50; krokixy = randn(n,2); posxy=[0 0 ; cumsum(krokixy)]; okno=figure; trj=plot(posxy(:,1),posxy(:,2),'-ms'); osie=gca; akt_okno=gcf; %otwarcie nowego okna; uchwyt okno % utworzenie wykresu; uchwyt trj % pobranie uchwytu osi (gca -> get current axes) % pobranie uchwytu aktualnego okna (gcf -> get current figure)

Modyfikowanie atrybutów obiektów (1) Funkcja get pobiera wartości atrybutów Funkcja set ustawia wartości atrybutów >> get(osie) %wyświetli wartości wszystkich atrybutów ActivePositionProperty = outerposition ALim = [0 1] ALimMode = auto AmbientLightColor = [1 1 1] FontAngle = normal FontName = Helvetica FontSize = [10] FontUnits = points Position = [0.13 0.11 0.775 0.815] TickLength = [0.01 0.025] TickDir = in >> set(osie) %wyświetlenie wszystkich atrybutów i możliwych wartości ActivePositionProperty: [ position {outerposition} ] ALim ALimMode: [ {auto} manual ] AmbientLightColor FontAngle: [ {normal} italic oblique ] FontName FontSize FontUnits: [ inches centimeters normalized {points} pixels ] FontWeight: [ light {normal} demi bold ] Position TickLength TickDir: [ {in} out ]

Modyfikowanie atrybutów obiektów (2) set i get przyjmują jako obowiązkowy argument wejściowy uchwyt do obiektu oraz dodatkowo: get przyjmuje nazwy atrybutów set przyjmuje nazwy i wartości do ustawienia shg %show graph wyświetla aktualnie aktywne okno get(okno) %wyswietla akutlanie ustawione wartosci pol set(okno,'name','przyklad 1 - Bladzacy Student',... 'NumberTitle', 'off') %ustawia wartosci wybranych pól set(trj,'linewidth',2,'markerface','blue') %ustawia parametry linii %WERSJA >= MATLAB 2014b okno%wyswietla akutlanie ustawione wartosci pol okno.name='przyklad 1 - Bladzacy Student' okno.numbertitle= 'off %itd

Hierarchia obiektów graficznych parents children https://www.mathworks.com/help/matlab/creating_plots/graphics-objects.html

Hierarchia obiektów graficznych przykład1

Hierarchia obiektów graficznych przykład2 Przykład dla wersji <= MATLAB 2014a %Do wczesniejszych polecen dodajemy htext=text(0,0,'start') hlegend=legend('student 1') >> get(okno,'children') %zwraca uchwyty do potomków okna ans = 355.0011 %obiekt legenda jest potomkiem okna 348.0011 %obiekt osie jest potomkiem okna >> get(osie,'children') ans = 350.0011 %obiekt tekstowy Start jest potomkiem osi 349.0016 %linia trajektorii jest potomkiem osi >> get(trj,'parent') %zwraca uchwyt do rodzica ans = 348.0011 %rodzicem linii jest obiekt osie

Hierarchia obiektów graficznych przykład2 Przykład dla wersji <= MATLAB 2014a %Do wczesniejszych polecen dodajemy htext=text(0,0,'start') hlegend=legend('student 1') >> get(okno,'children') %zwraca uchwyty do potomków okna ans = 355.0011 %obiekt legenda jest potomkiem okna 348.0011 %obiekt osie jest potomkiem okna >> get(osie,'children') ans = 350.0011 %obiekt tekstowy Start jest potomkiem osi 349.0016 %linia trajektorii jest potomkiem osi >> get(trj,'parent') %zwraca uchwyt do rodzica ans = 348.0011 %rodzicem linii jest obiekt osie

Graficzny interfejs użytkownika - Graphical User Interface (GUI) Dane wyjściowe przyjazne dla użytkownika Dane wyjściowe aplikacji Interfejs graficzny (GUI) Rdzeń aplikacji: Obliczenia Symulacje Gromadzenie Danych Użytkownik Dane wejściowe przyjazne dla użytkownika Dane wejściowe odpowiednie dla aplikacji Aplikacja

Graficzny interfejs użytkownika - Graphical User Interface (GUI) Dane wyjściowe przyjazne dla użytkownika Dane wyjściowe aplikacji Interfejs graficzny (GUI) Rdzeń aplikacji: Obliczenia Symulacje Gromadzenie Danych Użytkownik Dane wejściowe przyjazne dla użytkownika Dane wejściowe odpowiednie dla aplikacji Aplikacja

GUI - przykład Elementy interfejsu: Okna Listy Przyciski Menu Obrazy

Zadania GUI Uproszczenie korzystania z aplikacji Poprawa wydajności korzystania z aplikacji Profilowanie aplikacji w zależności od potrzeb użytkownika

GUI w MATLABie Budowa interfejsu graficzny W MATLABie: programistycznie za pomocą komend za pomocą graficznego środowiska GUIDE http://www.mathworks.com/help/matlab/creating_guis/about-the-simple-guide-gui-example.html

Programistyczna budowa GUI W M-pliku wpisywane są kolejne instrukcje, które: utworzą elementy interfejsu zdefiniują działanie tych elementów Podstawowe elementy GUI to obiekty: UIControl UITable UIMenu Elementy GUI są obiektami graficznymi takimi jak elementy wykresów - Posiadają uchwyty, atrybuty (nazwa + wartość)!

Programistyczna budowa GUI - przykład Menu Ilustracja Okna tekstowe Suwaki Przyciski

Programistyczna budowa GUI przykład tworzenie elementów %Fragmenty skryptu tworzącego interfejs, pełny skrypt do pobrania na stronie kursu f=figure; %utworzenie okna set(f,'position',[100 100 800 600],'color',[1 1 0.5], 'MenuBar', 'none', 'name','zadanie 4 - prawo Ohma','NumberTitle','off',) %parametry okna %SliderU - podaje napiecie slideru = uicontrol('style','slider','min',0,'max',10,'value',0, 'Position',[100 65 20 200],'SliderStep',[0.01 0.2]); %textu - wyswietla wartosci suwaka; text2u - podpis textu = uicontrol('style','text','position',[85,270,50,20],'backgroundcolor','white', 'String','0','FontWeight','Bold','FontSize',10); text2u = uicontrol('style','text','position',[70,295,80,20],'backgroundcolor','white', 'String','Napiecie','FontWeight','Bold','FontSize',10); %CIACH ( ) czesc programu nie pokazana %utworzenie Menu na pasku menuopt=uimenu(f,'label', 'Options') menuz=uimenu(menuopt,'label','zeruj','callback',pushb_z_callback) menuext=uimenu(menuopt,'label','exit','callback','close')

Programistyczna budowa GUI - CALLBACK programowanie zachowania elementów Atrybut Callback definiuje co się stanie przy interakcji użytkownika z obiektem W polu Callback umieszcza się łańcuch znaków, który jest uruchamiany jako komenda po interakcji %Callback slideru slideru_callback=['u = get(slideru,''value'');','set(textu,''string'',num2str(u))']; set(slideru,'callback',slideru_callback); %Callback sliderr set(sliderr,'callback','r=sliderr_callback(sliderr,textr)'); %w przypadku powyżej funkcja sliderr_callback jest zdefiniowana w innym pliku

Dostępne elementy GUI UIcontrol: Pushbutton Toglebutton Checkbox Radiobutton Listbox Popupmenu Slider Edit Text UImenu UItoolbar UIpushtool UItogletool UIcontextmenu UItable

GUIDE GUI Development Environment GUIDE to środowisko do graficznej budowy interfejsów Umożliwia projektowanie interfejsu za pomocą myszki generuje plik *.fig Automatycznie tworzy szablon funkcji do obsługi interfejsu plik *.m Uruchamianie GUIDE >>guide Na interfejs graficzny projektowany w GUIDE składają się dwa pliki: - Plik graficzny: nazwa.fig - Plik z oprogramowaniem nazwa.m

Graficzne projektowanie interfejsu (1) Tworzenie Menu Tworzenie przycisków na pasku UIcontrol UItable Axes

Graficzne projektowanie interfejsu (2) Tworzenie Menu Tworzenie przycisków na pasku

Graficzne projektowanie interfejsu najważniejsze atrybuty Podgląd atrybutów

Graficzne projektowanie interfejsu najważniejsze atrybuty Tag etykieta Jest nadawana automatycznie Dobrze jest ją modyfikować, tak aby miała znaczenie (domyslna nazwa) pushbutton1 (lepsza wlasna nazwa) poblicz Tag jest wykorzystywany w automatycznie generowanym pliku z kodem do obsługi interfejsu Style mówi o typie obiektu Niektóre pola są specyficzne dla danego typu obiektów np. SliderStep, ListboxTop Jaki rodzaj UIcontrol Jaka etykieta

Szablon obsługi interfejsu - *.m Szablon M-pliku do obsługi interfejsu generowany jest przy pierwszym zapisie projektu. Plik zawiera funkcje związane z: 1. uruchomieniem programu głównego GUI 2. inicjalizacją GUI 3. wartościami zwracanymi przez GUI 4. obsługą poszczególnych elementów GUI Własne tagi należy ustawić przed pierwszym zapisem lub zaraz po utworzeniu elementu GUI

Szablon obsługi interfejsu funkcja główna Uruchomieniem programu głównego GUI function varargout = GUIDE_Przyklad2(varargin) % GUIDE_PRZYKLAD2 MATLAB code for GUIDE_Przyklad2.fig % GUIDE_PRZYKLAD2, by itself, creates a new GUIDE_PRZYKLAD2 or raises the existing % CIACH ( ) % % Edit the above text to modify the response to help GUIDE_Przyklad2 % %Begin initialization code - DO NOT EDIT gui_singleton = 1; gui_state = struct('gui_name', mfilename,... %CIACH( ) Nazwa funkcji głównej jest taka jak nazwa budowanego interfejsu

Szablon obsługi interfejsu inicjalizacja i zwracane wartości % --- Executes just before GUIDE_Przyklad2 is made visible. function GUIDE_Przyklad2_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hobject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to GUIDE_Przyklad2 (see VARARGIN) % --- Outputs from this function are returned to the command line. function varargout = GUIDE_Przyklad2_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hobject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

Szablon obsługi interfejsu obsługa elementów GUI (1) % --- Executes on button press in pushbutton1. function pushbutton1_callback(hobject, eventdata, handles) % hobject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on selection change in listbox1. function listbox1_callback(hobject, eventdata, handles) % hobject handle to listbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hobject,'string')) returns listbox1 contents as cell array % contents{get(hobject,'value')} returns selected item from listbox1 Tag Rodzaj funkcji

Szablon obsługi interfejsu obsługa elementów GUI (2) Rodzaj funkcji

Szablon obsługi interfejsu obsługa elementów GUI (3) % --- Executes during object creation, after setting all properties. function listbox1_createfcn(hobject, eventdata, handles) % hobject handle to listbox1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: listbox controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hobject,'backgroundcolor'), get(0,'defaultuicontrolbackgroundcolor')) set(hobject,'backgroundcolor','white'); end

Funkcje Callback elementów GUI % --- Executes on button press in pushbutton1. function pushbutton1_callback(hobject, eventdata, handles) Wszystkie funkcje Callback (w tym CreateFcn, DeleteFcn, itd. ), przyjmują trzy argumenty: hobject uchwyt do elementu eventdata struktura zawierająca dane związane z aktywacją przycisku handles struktura z uchwytami do elementów GUI i danymi użytkownika

Struktura handles odwoływanie się do elementów GUI Struktura handles jest przekazywana do każdej funkcji callback generowanej automatycznie przez GUIDE Pozwala w callback u elementu odnosić się do innych elementów interfejsu: function pushbutton1_callback(hobject, eventdata, handles) % hobject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.listbox1, 'BackgroundColor','red') %Ustawia czerwone tło w %obiekcie listbox1 param=get(handles.edit1,'string') %Pobiera do zmiennej param zawartość %okienka edit1

Struktura handles przekazywanie zmiennych Struktura handles służy również do przechowywania i przekazywania wartości zmiennych: 1. Trzeba zapisać zmienną w nowym polu w handles 2. Trzeba zapisać zmiany w handles za pomocą funkcji guidata!ważne function pushbutton1_callback(hobject, eventdata, handles) % hobject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.listbox1, 'BackgroundColor','red') r=get(handles.edit1,'string'); polekola=obliczpolekola(r); % zmienna zniknie po zakonczeniu Callback'a handles.polekola=polekola; %utworzenie nowego pola w strukturze handles guidata(hobject, handles); %modyfikacja na stale struktury handles

Struktura eventdata dane związane z wydarzeniem Eventdata jest używana tylko w wybranych funkcjach callback np.: Dla UIControl KeyPressFnc przyciśnięcie przycisku klawiatury Dla UITable: CellEditCallback Edycja tabeli CellSelectionCallback zaznaczenie elementów tabeli Zawartość struktury jest szczegółowo opisana w komentarzu przy nagłówku wygenerowanej funkcji

Struktura eventdata przykład (1) function pushbutton1_keypressfcn(hobject, eventdata, handles) % hobject handle to pushbutton1 (see GCBO) % eventdata structure with the following fields (see UICONTROL) % Key: name of the key that was pressed, in lower case % Character: character interpretation of the key(s) that was pressed % Modifier: name(s) of the modifier key(s) (i.e., control, shift) pressed % handles structure with handles and user data (see GUIDATA) eventdata eventdata = Aby funkcja KeyPressFcn rejestrowała przyciśnięte klawisze klawiatury, odpowiedni obiekt interfejsu musi być zaznaczony ( keep focus ) Character: 'Z' Modifier: {'shift' 'alt'} Key: 'z'

Struktura eventdata przykład (2) % --- Executes when entered data in editable cell(s) in uitable1. function uitable1_celleditcallback(hobject, eventdata, handles) % hobject handle to uitable1 (see GCBO) % eventdata structure with the following fields (see UITABLE) % Indices: row and column indices of the cell(s) edited % PreviousData: previous data for the cell(s) edited % EditData: string(s) entered by the user % NewData: EditData or its converted form set on the Data property. Empty if Data was not changed % Error: error string when failed to convert EditData to appropriate value for Data % handles structure with handles and user data (see GUIDATA)

GUI - podsumowanie Interfejs graficzny jest warstwą oprogramowania pomiędzy użytkownikiem, a rdzeniem programu przekazuje dane od użytkownika do funkcji liczących przekazuje dane z funkcji liczących do użytkownika interfejs nie wykonuje obliczeń! W matlabie GUI można tworzyć programistycznie lub za pomocą GUIDE Każda funkcja callback otrzymuje uchwyt do aktywnego obiektu oraz struktury: Handles odwołania do innych elementów i przechowywania danych (guidata) Eventdata dane związane z wydarzeniem np. kolumny i wiersze zaznaczone w tabeli

Projektowanie interfejsów graficznych

Efektywny interfejs graficzny Efektywny GUI ułatwia zrozumienie złożonych informacji. Elementy istotne dla zrozumiałego przekazu: Rozkład elementów: Rozmiary, proporcje i siatki Rozmieszczenie 2D i 3D Typografia Wybór czcionek i rozmiarów Kolory i tekstura Symbolika Znaki, ikony i symbole od rzeczywistych do abstrakcyjnych Sekwencjonowanie Opowiadanie graficznej historii Wizualna tożsamość Zasady, które pozwalają zachować ogólną spójność interfejsu

Zasady projektowania efektywnego GUI Aranżacja dostarczenie użytkownikowi przejrzystej i spójnej struktury elementów (spójność, rozmieszczenie i grupowanie elementów, prowadzenie wzroku użytkownika) Funkcjonalność dostarczenie jak największej ilości informacji przy minimalnej liczbie wysyłanych sygnałów Komunikatywność dopasowanie sposobu prezentacji danych do użytkownika

Aranżacja - spójność Spójność wewnętrzna Do wszystkich elementów GUI stosowane są jednakowe konwencje i zasady Spójność zewnętrzna Jeżeli istnieją ogólnie przyjęte konwencje to nie należy ich łamać Spójność ze światem rzeczywistym Tworzone konwencje powinny być spójne z doświadczeniami użytkownika Innowacyjność Konwencje można łamać, ale tylko gdy przynosi to ewidentne korzyści http://web.cs.wpi.edu/~matt/courses/cs563/talks/smartin/int_design.html

http://web.cs.wpi.edu/~matt/courses/cs563/talks/smartin/int_design.html Aranżacja - rozmieszczenie elementów Podział ekranu użytkownika za pomocą siatki Sugeruje się 7±2 główne linie siatki (pionowe lub poziome) Elementy powiązane należy grupować przez: Kształt, Rozmiar, Kolorystykę i Lokalizację (ale nie koniecznie wszystko naraz) Chaotyczne grupowanie i rozmieszczenie elementów Prawidłowe grupowanie

http://web.cs.wpi.edu/~matt/courses/cs563/talks/smartin/int_design.html Aranżacja prowadzenie wzroku Skupić uwagę na głównych elementach Skierować uwagę na elementy drugo- lub trzecio-rzędne Prowadzić wzrok przez całą zawartość strony/ekranu Brak kierowania uwagi Prawidłowe skupianie i prowadzenie uwagi

http://web.cs.wpi.edu/~matt/courses/cs563/talks/smartin/int_design.html Funkcjonalność oszczędność Interfejs zawiera wyłącznie elementy niezbędne do przekazania informacji. Elementy ułożone w sposób czytelny.

http://web.cs.wpi.edu/~matt/courses/cs563/talks/smartin/int_design.html Funkcjonalność - przejrzystość Elementy powinny być jednoznaczne

Funkcjonalność różnicowanie i wyróżnianie Cechy, które różnicują elementy powinny być łatwe do wychwycenia Najważniejsze elementy powinny być łatwe do zauważenia Elementy mniej istotne nie powinny się wyróżniać

http://web.cs.wpi.edu/~matt/courses/cs563/talks/smartin/int_design.html Komunikatywność - czytelność Stosować czcionki drukowane Stosować wyrównania: Tekst do lewej strony Liczby do prawej Stosowanie różnych czcionek musi mieć uzasadnienie Stosować maksymalnie 3 rodzaje czcionek Stosować maksymalnie 3 rozmiary czcionek Unreadable: Design components to be easy to interpret and understand. Design components to be inviting and attractive. Readable Design components to be easy to interpret and understand. Design components to be inviting and attractive.

Komunikatywność reprezentacja danych Złożone dane wyświetlać na kilka sposobów Dane tabelaryczne wspierać wykresami Dopasowywać typ wykresu do rodzaju danych p1 19% p2 21% p3 15% p4 9% p5 19% p6 17%

Komunikatywność - KOLORYSTYKA Aranżacja Wzmocnienie spójności Grupowanie elementów Przyciąganie uwagi Funkcjonalność Maksymalnie 5±2 kolory Interfejs powinien działać prawidłowo jako czarno-biały Kolory stosuje się jako dodatkowe wzmocnienie przekazu Wyróżnianie należy ograniczać ilość kolorów przyciągających uwagę Moc kolorów może różnicować istotność Komunikatywność Używać kolorów różniących się barwą i nasyceniem W ciemnych pomieszczeniach: ciemne tło, jasne czcionki i linie W jasnych pomieszczeniach: jasne tło, ciemne czcionki i linie