Programozás III. Grafikus felület API-k és összehasonlításuk

Slides:



Advertisements
Hasonló előadás
Grafikus felhasználó felület Windows alatt
Advertisements

„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
2010/2011 ősz Klár Gergely  A DirectX egy alacsonyszintű API gyűjtemény  Multimédiás alkalmazások futtatására, írására szolgál  Részei.
Grafikus tervezőrendszerek programozása 10. előadás.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 8. rész – Grafikus felhasználói felület Nyugat-Magyarországi Egyetem Faipari Mérnöki.
Verzió 1.1.  Propszt István (csoportfelelős)  Resz János-Antal  Rusz Erzsébet  Varga Anita.
Az operációs rendszer Egy olyan szoftver, ami a számítógépeink használatához nélkülözhetetlen. Főbb feladatai: programok betöltése, futtatása perifériák.
Weblap szerkesztés HTML oldal felépítése Nyitó tag Záró tag Nyitó tag Záró tag oldalfej tözs.
Új online technológiák: lehetőségek és kihívások Kerese István Fejlesztési platform üzletág igazgató Microsoft Magyarország
Mellár János 3. óra Szeptember 16. v
Iratkezelő rendszer fejlesztése WPF alapokon
Grafika a programban Készítette: Pető László. Bevezetés Valójában nem a célobjektumra rajzolunk, hanem annak festővászon területére (canvas). Csak olyan.
A Windows grafikus felülete
Ember László Damn Small Linux Microsoft VPC környezetben.
Microsoft Windows A Windows fejlődése, általános jellemzése – 2. dia
Közös kinézet Mester oldal, témák, skin-ek, css Webalkalkalmazás fejlesztése ASP.NET-ben Krizsán Zoltán.
Célkeresztben az érettségi! A legjobb és leghatékonyabb eszközt akarjuk Kevesebb hibalehetőség, barátságos hibaüzenetek Kiváló fejlesztőeszköz Gyorsan.
 A felhasználói felület határozza meg az operációs rendszer megjelenését, az asztal felépítését, és azt, hogyan navigálhatunk az operációs rendszer.
Webszerkesztés Űrlapok a HTML-ben. Űrlap létrehozása Űrlapunk tartalma a … elemek között fog helyetfoglalni Egy lapon több űrlap is elhelyezhető Több.
VFP Form programozás Form szerkesztő elemei vezérlő elemek
Microsoft Access Vezérlőelemek.
A LabVIEW használata az oktatásban
V 1.0 ÓE-NIK, Programozás I. A Microsoft Visual Studio 2010 használata.
ARCHITECTArchitect AcademyFoundationsInsidersMCPtréningekvizsgákgyakorlatprojektek Novák István eEvangelist – „Dive deeper” Grepton Zrt. Technológiai vezető.
Bátyai Krisztián NetAcademia Oktatóközpont oktató, fejlesztő MCT, MCPD
A program a „Tudáshasznosulást, tudástranszfert segítő eszköz-, és feltételrendszer kialakítása, fejlesztése a Műegyetemen” (TÁMOP /1/KMR )
Vizuális alkalmazások a FoxProban Páll Éva Boglárka.
4. Feladat (1) Foci VB 2006 Különböző országok taktikái.
2012. tavaszi félév Véső Tamás Véső Tamás OE­NIK / 29.
Űrlapok és keretek.
Bevezetés a PRADO keretrendszerbe Kardos Gergely.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Delphi Készítette: Rummel Szabolcs Elérhetőség:
APEX BMF, II. félév.
Visual Basic 2008 Express Edition
Visual Basic 2008 Express Edition
Fontos információk.
A gyakorlatok munkakörnyezete
Virtuális Méréstechnika Sub-VI és grafikonok 1 Makan Gergely, Vadai Gergely v
Mérés és adatgyűjtés laboratóriumi gyakorlat - levelező Sub-VI és grafikonok 1 Mingesz Róbert V
Grafikai lehetőségek WPF-ben Egyszerű grafika (Shape-ek)
V 1.0 ÓE-NIK-AII, Programozás I. Karaktersorozatok Feladatok.
A C++ nyelv.
V 1.0 Programozás III. További ablakok készítése Továbbított események.
RAD Studio XE5: menük felépítése
Webprogramozó tanfolyam Űrlapok (form-ok). Űrlapok a HTML-ben Biztosan mindenki találkozott már vele – Űrlap példapélda Felhasználási lehetőségei – Regisztráció,
Számítógépes grafika I. AUTOCAD alapok
Számítógépes grafika I. AUTOCAD alapok 3. előadás.
Az Office 2007 új grafikus felülete
A Visual Basic és a programozás oktatása
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 1. gyakorlat.
DLL használata és készítése Feladat
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Windows Forms alkalmazás készítése Czigléczky Gábor 2009.
V 1.0 Programozás III. Grafikus felület API-k és összehasonlításuk WPF Hello World Fontosabb UI-elemek UI-elemek tartalommodelljei UI-elemek öröklődési.
V 1.0 OE-NIK, Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok.
V 1.1 Programozás III. Felhasználóifelület-elemek fontosabb tulajdonságai, eseményei, metódusai XAML alapok.
V 1.0 Programozás III. XML XAML Adatkötés I.. V 1.0ÓE-NIK, 2014 XML (w3schools.com) Hierarchikus adatleíró formátum XML deklarációk + elemek + attribútumok.
V 1.01 Szoftverfejlesztés párhuzamos és elosztott környezetben Generikus típusok Delegáltak Anonim függvények Lambda kifejezések GUI készítése.
Alkalmazásfejlesztés gyakorlat
Továbbított események További ablakok készítése
Windows Presentation Foundation
Programozás III. Felhasználóifelület-elemek fontosabb tulajdonságai, eseményei, metódusai Preview események.
Programming III. GUI APIs WPF Hello World Important UI elements
Programozás III. MVVM Adatkötés I..
Neumann János Informatikai Kar
Ubuntu – ismerkedés Fájlok és könyvtárak
Adatkötés Sablonokkal
Programozás III. MVVM Adatkötés I..
Előadás másolata:

Programozás III. Grafikus felület API-k és összehasonlításuk WPF Hello World Fontosabb UI-elemek UI-elemek tartalommodelljei UI-elemek öröklődési lánca

Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelező irodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges.

Grafikus felület API-k API: Application Programming Interface GUI felületeinket általában nem magunk nulláról programozzuk A játékok gyakori ellenpélda Felépítésükhöz kívülről biztosított API-kon keresztül elérhetünk kész építőköveket/eszközöket MFC (Windows/C++) Windows Forms (Windows/.NET) Java AWT/Swing (Java) Cocoa (Mac OS X) QT (főleg Unixok) GTK/GTK+ (főleg Unixok) WPF (Windows/.NET) Windows Runtime (Metro) (Windows/C#, C++) A VS WPF-es (2012-től kezdve) A Paint.NET Windows Forms-os A Calendar metrós  (Csak desktop alkalmazásokhoz alkalmas API-k vannak listázva)

Grafikus felület API-k / Windows Forms .NET 1.0-től (2002) Gyakorlatilag csak natív Windows API elemekhez biztosít menedzselt hozzáférést. Windows API: Windows 1.0-tól (1985) Egyszerű, klasszikus kinézetű felületek Funkcionalitás: csak GUI Ablakok készítése és menedzselése Ablakok felépítéséhez szükséges komponensek (gombok, szövegdobozok, scrollbar-ok stb.) Dialógusablakok Egér és billentyűzet input kezelése Stb. Funkcionalitás: a Windows Forms konkrétan csak GUI. A további szükséges holmikat a Windows API további komponensei vagy 3rd partyk biztosítják. Pl: 2d grafika a GDI/GDI+-on keresztül megy, a 3D grafikához többnyire DirectX-et használunk, videókezeléshez Media Player API, hanghoz megint más stb. (ez az összehasonlítás a következő könyvből van: Andrew Troelsen: Pro C# 5.0 and the .NET 4.5 Framework)

Grafikus felület API-k / WPF .NET 3.0-tól (2006) Windows Forms lecserélésére szánták Csak félig sikeres! (2014-es állapot) Grafikus alkalmazások fejlesztésének (szinte) minden aspektusához egységes hozzáférést, logikát biztosít Felhasználói felület felépítése (mint Windows Forms) 2D grafika 3D grafika Multimédia/videó Stb. WinForms lecserélése sikertelen elsősorban a nagyon lassan fejlődő rossz designer támogatás (nehezen összerakható felületek, nehezen/sehogy debugolható xaml) és a nehéz tanulhatóság miatt, fej-fej mellett haladó két technológia maradtak, bár a MS nagyon nyomja a WPF-et. STB: dokumentumkezelés (XPS, pdf-szerű dokumentum) és pl gesztuskezelés, stylus A WPF ugyanúgy 3rd partykon keresztül nyújtja a szolgáltatásait részben (DirectX stb), csak egységes logikát nyújt hozzájuk.

Grafikus felület API-k / Windows Runtime Metro: design elvek, designnyelv (Metro -> Modern -> Windows Store/Windows 8) Modális, teljes képernyőt elfoglaló, nagyon egyszerű grafikájú felületek Elsősorban kis képernyőjű, hordozható eszközökön előnyös A metró jellegű felületek készítése XAML eszközzel, a Windows Runtime API (vagyis inkább API-gyűjtemény) felé történik. Itt nem nagyon tudunk funkcionalitási felsorolást tenni, hiszen a Windows Runtime nem grafikus felület api igazából, hanem a WinAPI modern megfelelője, és persze mindenféle funkcionalitása van még a gui-n kívül. Van aki szerint a metró „designnyelv” kialakításának oka a hordozható kütyük akkujának kímélése volt.

Windows Forms vs. WPF Windows Forms WPF Egyszerű grafikus alkalmazások készítéséhez „Rich desktop apps” Gazdag grafikájú, multimédiás alkalmazásokhoz Viszonylag kötött bevett megoldások Szinte mindenre többféle megoldás A nagyon alapnál több funkcionalitáshoz már külső könyvtárak igénybevétele szükséges (ezek használatának logikája teljesen eltérő lehet!) Nagyon sok eszközhöz biztosít elérést és egységes logikát Nagyon régi, kiforrott, minden hibája ismert Nemrég még jelentős fejlesztés alatt, hibák megoldására még most is alakulnak a bevett módok Könnyen tanulható Nehezen tanulható

Melyiket? http://blog.arsanth.com/index.php/2011/09/15/what-is-and-isnt-dead-in-windows-8/ (2013. február 22.) Jelenleg a WPF a legjobb lehetőségünk asztali fejlesztéshez – WinForms, ha gyors prototipizálás kell, vagy létező projektben, vagy ha a csapat csak azt ismeri A XAML-t mint technológiát ugye viszi tovább a Win8.

Jövő (2014) ? Windows Forms támogatása örökéletűnek várható, de már nem fejlesztik WPF jövője kérdéses, fejlesztése lassú XAML viszont túlél, fejlődik A Microsoftnak a grafikus felület tervezésében tett következő lépésétől függ minden

WPF Hello World

WPF Hello World

WPF Hello World View -> <ablak neve> View -> Other Windows -> <ablak neve> Itt csináljatok valami egyszerű Hello World-öt talán valami gombbal és MessageBox-szal. DOCUMENT OUTLINE-t IS MUTASD MEG!!!

WPF Hello World Projektbeállítások Hivatkozások Alkalmazás fájljai Fordítási beállítások Fordítás előtti és utáni események Parancssori argumentumok Felhasználói/alkalmazásszintű beállítások Stb. Hivatkozások Keretrendszeri vagy harmadik fél által készített könyvtárakra Alkalmazás fájljai Ablak fájljai

App, MainWindow App osztály: MainWindow osztály: App.xaml.cs + generált bin/obj/App.g.cs = App osztály A Main függvény alapértelmezésben ide generálódik, benne példányosít egyet ebből az osztályból és megjeleníti a főablakot Alkalmazásunkat reprezentálja: Current statikus tagban van tárolva egy mindig elérhető példány. Startup, Exit események, Shutdown() függvény a bezáráshoz (App.Current.Shutdown()) MainWindow osztály: Egy ablakot reprezentál (alapbeállítás szerint ez a „főablak”, de ez módosítható) MainWindow.xaml.cs + generált bin/obj/MainWindow.g.cs = MainWindow osztály InitializeComponent() függvény generálódik bele, amiben betölti a XAML fájlt

WPF Hello World Felhasználói felület XAML nyelvű leírása és designer

WPF Hello World Ablak mögöttes kód (code-behind) fájlja

WPF Hello World A kijelölt felhasználóifelületelem-példány tulajdonságai a Properties ablakban szerkeszthetők

WPF Hello World II. Ha csinálsz rá bezárás gombot is, azzal ki lehet próbálni az App.Current.Shutdown()-t.

WPF Hello World II. Eseménykezelés A vezérlők (később pontosítjuk!) eseményeire való feliratkozást a Properties ablakban (villám ikon) lehet megtenni Kettős kattintással új eseménykezelő jön létre a code-behind fájlban, és megtörténik a feliratkoztatás az eseményre Törlés és enter után a feliratkozás törlődik, a létrejött függvény nem! (Kézzel törlendő, ha már nem szükséges.) Eseménykezelőt hozzárendelni a vezérlőn való kettős kattintással is lehet, ez az ún. alapértelmezett eseményhez rendel eseménykezelőt

Toolbox Vezérlők Egyszerű grafikai elemek Felhasználói interakcióhoz Egyszerű grafikai elemek Ablakkereteket kiegészítő elemek Menü, eszközkészlet, státuszsor… Tartalommenedzserek Elemek csoportosítására, méretezés kezelésére Stb.

Egyszerű vezérlők Button (nyomógomb) Label (szöveg) Content tulajdonság tartalmazza a szöveget (?) Click esemény Label (szöveg) Content tulajdonság tartalmazza a szöveget(?) CheckBox (jelölőnégyzet) IsChecked tulajdonság tartalmazza, hogy be van-e jelölve Checked/Unchecked események RadioButton (rádiógomb) GroupName csoportosítja, de enélkül is biztosít a csoportosításra logikát IsChecked Ezeket inkább mutasd be nekik példaprogramon! A tulajdonságaikat meg az eseményeiket nem kell részletezni, szinte mind ki lesz próbálva.

Egyszerű vezérlők TextBlock (szöveg II) TextBox (szövegbeviteli mező) Text tulajdonságban van a szöveg TextBox (szövegbeviteli mező) TextChanged esemény GroupBox (csoportosító doboz) Header tartalmazza a fejléc szövegét Content tulajdonságban van a tartalom Stb.

Listavezérlők ListBox (lista) ComboBox (legördülő lista) Items tulajdonság tartalmazza az elemeket SelectionChanged esemény ComboBox (legördülő lista) TreeView + TreeViewItem (fanézet) Items tartalmazza az elemeket Ha TreeViewItem van benne, azon belül is Items tartalmazza az elemeket, Header a szöveget

UI-elemek öröklési lánca System.Windows.Media.Visual: Renderelés támogatása, transzformációk, találattesztelés, befoglaló téglalap, koordináta-transzformációk… System.Windows.UIElement: Input, elrendezés, fókusz támogatása, eseménykezelés System.Windows.FrameworkElement: Adatkötés (stb.)

UI-elemek öröklési lánca System.Windows.Controls.Control: Vezérlők ősosztálya: főként a vezérlők kinézetének teljes cserélhetőségét támogatja. Alapvető beállítások a vezérlőn (Background, BorderThickness, BorderBrush, FontFamily, FontSize stb), amiket a vezérlő kinézetét meghatározó ControlTemplate használ fel (Template tulajdonság). ControlTemplate hiányában a tulajdonságoknak nincs funkciója!

UI-elemek öröklési lánca System.Windows.Controls.ContentControl: Felhasználóifelület-elemek lehetséges tartalommodelljeinek egyike: egyetlen elemet tartalmazhat (Content tulajdonság). A Content tetszőleges típusú lehet (Object), nagyon sokszor string vagy UIElement-utód. Felhasználóifelület-elemek egymásba építése nagyon gyakori használati mód Az első kép: Button, benne DockPanel, benne két Rectangle. Második kép: Button, benne DateTime. Még teszek ide több képet, ha eszembe jut.

UI-elemek öröklési lánca ContentControl leszármazottak (nem feltétlenül közvetlen): Button CheckBox Label RadioButton … Window Az első kép: Button, benne DockPanel, benne két Rectangle. Második kép: Button, benne DateTime. Még teszek ide több képet, ha eszembe jut.

UI-elemek öröklési lánca System.Windows.Controls.ItemsControl: Felhasználóifelület-elemek lehetséges tartalommodelljeinek egyike: több elemet tartalmazhat (Items, ItemsSource tulajdonság). Items: ItemCollection típusú – Object elemeket fogad ItemsSource: IEnumerable Egyszerre csak az egyiket használjuk – ha ItemsSource-ot, akkor az Items fix méretű és read-only lesz. ItemsSource csak akkor használható, ha az Items üres. Az első kép: Button, benne DockPanel, benne két Rectangle. Második kép: Button, benne DateTime. Még teszek ide több képet, ha eszembe jut.

UI-elemek öröklődési lánca ItemsControl leszármazottak (nem feltétlenül közvetlen): ComboBox ListBox ListView Menu TreeView …

Elemek elrendezése HorizontalAlignment VerticalAlignment Elem vízszintes rendezése a tartalmazóján belül VerticalAlignment Elem függőleges rendezése a tartalmazóján belül Margin: távolság az objektum körül Height, Width Ezek a beállítások kölcsönhatásban vannak, együtt alakítják ki az objektum elhelyezkedését (pl. …Alignment+Margin, Height+VerticalAlignment, Width+HorizontalAlignment…) Hát, valahogy ide kéne írni, hogy az objektum beállítás nélkül a tartalmazóját kitölti, de ezt xaml nélkül nehezen tudjuk prezentálni még.

Tartalommenedzserek Céljuk az elemek meghatározott szabályok szerinti elrendezése és átméretezés kezelése – saját grafikus megjelenésük nincs! Grid (elemek rácsszerű elrendezésére) Canvas (elemek adott pixelre való elhelyezésére) DockPanel (igazított elhelyezés) StackPanel (elemek egymás utáni elhelyezése) WrapPanel (elemek egymás utáni elhelyezkedése, lapozással) Mindegyiknek Children tulajdonsága tartalmazza az elemeket Grid: StackPanel: Az előzőekben említett TARTALMAZÓK. (Talán megzavaró lehet, hogy nincsenek benne a „vezérlők tartalommodelljei” részben, pedig ugyanúgy elemeket tartalmaznak. De ezek nem vezérlők.)

UI-elemek öröklődési lánca System.Windows.Controls.Panel: A tartalommenedzserek a Panel osztály utódai Children: UIElementCollection típusú – UIElement típusú elemeket fogad

Feladat