WINDOWS PRESENTATION FOUNDATION LEKTION 1



Relevanta dokument
WINDOWSPROGRAMMERING LEKTION 1

AGENDA WINDOWS PRESENTATION FOUNDATION LEKTION 2. Mer om Kontroller. Mer om Paneler Grid Stack Panel Wrap Panel Dock Panel

WINDOWSPROGRAMMERING LEKTION 2

ASP.NET Web Forms. Copyright Mahmud Al Hakim Vad är Web Forms?

Kursplanering Objektorienterad programmering

Objektorienterad programmering Föreläsning 2

Windows Forms Winstrand Development

Objektorienterad programmering

ASP.NET Thomas Mejtoft

Objektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder

Innehållsförteckning

SMD091 Lektion 9. Definition. Inkapsling. Lite repetition. Grafik. Gränssnitt Definition och Implementation. Sammansättning... Implementation.

Interaktiva applikationer för dator (WPF) och web (Silverlight) Grafisk utvecklingsmiljö. Hela produktioner: design, layout, animationer, skins, etc.

Agenda (obs! halvdag)

Lab5 för prgmedcl04 Grafik

Kursplanering Utveckling av webbapplikationer

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Webbaserad GIS-klient för hantering av geologisk information

TENTAMEN I DATAVETENSKAP

Exempel på användning av arv: Geometriska figurer

Microsoft Expression Blend + Sketch Flow

Lab1 Introduktion. 1 Syfte. 2 Innehåll Win32API Skapa trådar Kritiska sektioner Mailslothantering. 3 Förberedelse & Tips

3.5 Visuell programmering

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018

Lektion 2, Grundläggande funktioner i ASP.NET

Objektorienterad programmering Föreläsning 15. Grafiska användargränssnitt (GUI Graphical User Interface)

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Grafik i DrRacket AV TOMMY KARLSSON

Högskolan i Halmstad Multimedia och visuell kommunikation Övning 1 Adobe Flash, grundfunktioner & interpolering. Efter övningen förväntas du kunna:

ASP.NET MVC. Copyright Mahmud Al Hakim Innehåll

ID1004 Laboration 3, 5-6 November 2012

Framtagning av Drag&Drop klassbibliotek för WPF-baserat användargränssnitt

Joomla CMS Del 2 av 2

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

SgLib Simple Graphics Library

Innehållsförteckning

InkScape. Inkscape är ett gratisprogram för objektgrafik (vektorgrafik) Man använder programmet till att illustrera, rita, skapa logotyper och figurer

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

PROGRAMMERINGSTEKNIK TIN212

Övning Arbeta med klasser

Android översikt. TDDD80 Mobila och sociala applikationer

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Design och konstruktion av grafiska gränssnitt

Introduktion till Entity Framework och LINQ. Källa och läs mer

Objektorienterad Systemutveckling Period 3

Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa.

Objektorienterad programmering Föreläsning 20

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

Programvaruutveckling

Arv och polymorfism i Java

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

Monitor Pro V7.x SCADA. Förstå och skapa symboler

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Laboration 1 Introduktion till Visual Basic 6.0

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

Programvaruutveckling för nybörjare

Malmö högskola 2007/2008 Teknik och samhälle

Laboration 3 GUI-programmering

PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

Laboration 1: Design av applikation för uthyrning av maskeradkläder

Allta bilder du ritar med verktygen i verktygspanelen eller importerar är grafik.

On-line produktion TDDC61

Omtentamen i OOSU2, 16 maj 2014

Lektion Händelsehanterare

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

ADOBE FLASH 8. Vad är egentligen Flash

Tentamen i Objektorienterad modellering och design

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Kravspecifikation. Sammanfattning. Fyra i rad Javaprojekt inom TDDC32. Version 2.0. Datum Dokumentnummer

Instruktioner för Articulate Studio 13

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Föreläsning 13 Innehåll

Lektion 2 - CSS. CSS - Fortsätt så här

OOP. vs procedural programming Design av interaktiv multimedia

Design och konstruktion av grafiska gränssnitt

Laboration 1: Figurer i hierarki

Principles of subclasses Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

TDDI82 - Projekt. Christoffer Holm. Institutionen för datavetenskap (IDA)

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

7,5 högskolepoäng. Objektorienterad systemutveckling I Provmoment: Ladokkod: 21OS1B Tentamen ges för: Lycka till! /Peter & Petter

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Mattias Enervall (Övningsassistent) Examination. 1 Skriftlig tentamen (betyg)

Inlämningsuppgift 2. DA156A - Introduktion till webbutveckling Teknik och samhälle, Malmö högskola Oktober 2012

Macromedia. Flash 8 Grundkurs.

Övning: Arbeta med Azure Explorer

Starta ett fönster... Hur håller tkinter reda på musklick? Olika sätt att organisera fönsterinnehåll. Och för att placera våra widgets

Transkript:

WINDOWS PRESENTATION FOUNDATION LEKTION 1 Mahmud Al Hakim mahmud@alhakim.se www.alhakim.se COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 1 MÅL Kursens övergripande mål Efter avslutad kurs ska den studerande kunna tillverka grafiska applikationer i C# WPF, t. ex. enklare spel och användargränssnitt med XAML. Kursens innehåll Kursen kommer att behandla följande centrala områden: WPF Användargränssnitt med XAML Media Layout och kontroller Databindning Dokumentmallar och stilmallar Copyright Mahmud Al Hakim www.webacademy.se 2015 2 1

BETYGSKRITERIER För Godkänt (G) krävs att Studenten ska självständigt kunna utveckla enklare WPF-applikationer med hjälp av grafiska användargränssnitt i XAML. För Väl Godkänd (VG) krävs att Studenten ska självständigt kunna utveckla mer avancerade WPF-applikationer med grafiska användargränssnitt i XAML och tillhörande databaskopplingar. COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 3 KURSPLANERING Antal lektioner 5 (teori, demonstrationer och övningar) Antal laborationer 2 (halvdagar) Antal inlämningsuppgifter 2 Inlämningsuppgifter redovisas muntligen under schemalagd tid. Eventuella kompletteringar ska åtgärdas och redovisas senast den 15 december 2015.. Praktisk Tentamen på dator den 18 december 2015 9.00-12.00 COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 4 2

REKOMMENDERAD REFERENSLITTERATUR Titel: Illustrated WPF Författare: Daniel M. Solis ISBN: 9781430219101 COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 5 TIPS HTTP://WWW.WPF-TUTORIAL.COM 6 3

INTRODUCTION TO WPF (VISUAL STUDIO 2015) PÅ MSDN HTTPS://MSDN.MICROSOFT.COM/EN-US/LIBRARY/MT149842(V=VS.110).ASPX COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 7 VAD ÄR WPF? WPF står för Windows Presentation Foundation. WPF är ett ramverk för utveckling av bättre UI (User Interface) för desktopapplikationer. Huvudsyftet med WPF är att separera användargränssnitt (design) från logiken (koden). En designer ska kunna arbeta med utseendet, medan en utvecklare arbetar parallellt med logiken bakom. WPF använder XAML för att skapa användargränssnittet. Som programspråk används oftast C# men du kan använda valfri.net-språk t.ex. Visual Basic. COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 8 4

VAD ÄR XAML? XAML står för Extensible Application Markup Language. XAML baseras på XML-syntax. XAML används i WPF för att beskriva och definiera användargränssnittet (UI) t.ex. fönster, dialogrutor, figurer, grafik, animeringar m.m. COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 9.NET 3.X ÄR EN SUPERSET AV.NET 2.0 Bildkälla: : Illustrated WPF, sidan 14 COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 10 5

WPF APPLICATION HELLO WORLD COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 11 FILEN APP.XAML <Application x:class="wpf_hello_world.app" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:wpf_hellow_world" StartupUri="MainWindow.xaml"> <Application.Resources> </Application.Resources> </Application> COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 12 6

FILEN APP.XAML.CS using System.Windows; namespace WPF_Hello_World { /// <summary> /// Interaction logic for App.xaml /// </summary> public partial class App : Application { COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 13 FILEN APP.XAML.CS SKAPA ETT FÖNSTER DIREKT I WPF VIA CODE BEHIND using System.Windows; namespace WPF_Hello_World { public partial class App : Application { private void Application_Startup(object sender, StartupEventArgs e) { Window f = new Window(); f.title = "Hello World"; f.show(); COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 14 7

FILEN APP.XAML ÄNDRA STARTUPURI TILL STARTUP <Application x:class="wpf_hello_world.app" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:wpf_hellow_world" Startup="Application_Startup" > <Application.Resources> </Application.Resources> </Application> COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 15 FILEN MAINWINDOW.XAML <Window x:class="wpf_hello_world.mainwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:wpf_hello_world" mc:ignorable="d" Title="Hello World" Height="350" Width="525"> <Grid> </Grid> </Window> COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 16 8

KLASSEN WINDOW COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 17 KLASSEN WINDOW NÅGRA EGENSKAPER <Window x:class="wpf_hello_world.mainwindow" xmlns... Title="Hello World" Height="300" Width="300" Background="Green" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" > </Window> COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 18 9

KONTROLLER (CONTROLS) I WPF, används ordet Control som paraplybegrepp för ett antal klasser som har ett användargränssnitt (UI) och implementerar vissa beteenden (händelser) t.ex. TextBlock Button Grid Image Calendar Menu Tips https://msdn.microsoft.com/en-us/library/mt149842(v=vs.110).aspx COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 19 TEXTBLOCK <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="72"> Hej WPF! </TextBlock> COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 20 10

KNAPPAR <Grid> </Grid> <Button Name="knapp">Hello World</Button> COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 21 EN HÄNDELSEHANTERARE I CODE-BEHIND public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); private void knapp_click(object sender, RoutedEventArgs e) { MessageBox.Show("Hello, WPF!"); COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 22 11

SKAPA EN HÄNDELSE I XAML <Button Name="knapp" Click="knapp_Click"> Hello World </Button> Peek COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 23 BUTTON FLERA EGENSKAPER <Button Name="knapp" Click="knapp_Click" Width="150" Height="50" FontFamily="Verdana" FontSize="18" FontWeight="Bold" BorderThickness="5" BorderBrush="AliceBlue" Margin="195,160,0,0" HorizontalAlignment="Left" VerticalAlignment="Top ToolTip="Klicka här!" > Hello World </Button> COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 24 12

ANVÄND ACCESS KEYS (MNEMONICS) <Button Name="knapp" Click="knapp_Click" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="50" Foreground="DarkRed"> _Klicka här! </Button> Håll ner ALT+K COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 25 LAYOUT När du skapar ett användargränssnitt behöver du ordna kontroller efter position och storlek. WPF/XAML innehåller flera layoutkontroller t.ex. Grid: rutnätslayout med rader och kolumner. Canvas: valfri absolut placering av objekt. StackPanel: Staplar automatiskt objekten lodrätt eller vågrätt. DockPanel: Objekt justeras till panelens kanter. WrapPanel: Objekt anpassas till fönstret horisontellt eller vertikalt. COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 26 13

CANVAS COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 27 GRAFIK WPF har stöd till ett antal grafikkontroller, både 2D och 3D, samt även effekter och animeringar. Exempel på enkla figurer som ärver från klassen Shape Line Rectangle Ellipse Polygon Layoutkontrollen Canvas är lämpligast att använda för att rita figurer, för objekten kan placeras i valfri position. COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 28 14

ENKLA FIGURER <Canvas Height="300" Width="300"> <Line X1="10" Y1="10" X2="50" Y2="70" Stroke="Red" StrokeThickness="10" /> <Ellipse Fill="Yellow" Height="100" Width="80" StrokeThickness="1" Stroke="Black" Canvas.Left="100" Canvas.Top="10" /> </Canvas> Canvas.Left och Canvas.Top Kallas Attached properties COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 29 BORDER <Canvas> </Canvas> <Border BorderBrush="Black" Width="100" Height="100" BorderThickness="10" CornerRadius="25" Canvas.Left="10" Canvas.Top="10"> </Border> COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 30 15

KAPSLADE ELEMENT <Grid> <Button Width="200" Height="100"> <Ellipse Fill="Yellow" Height="90" Width="190" /> </Button> </Grid> COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 31 ÖVNING Rita en valfri ellips. Skapa en knapp som beräknar ellipsens area. Visa resultatet i en dialogruta med 2 decimaler. COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 32 16

Z-INDEX <Canvas> <Ellipse Panel.ZIndex="2" Fill="Yellow" Canvas.Left="25" Canvas.Top="25" Width="100" Height="100" /> <Rectangle Panel.ZIndex="3" Fill="RED" Canvas.Left="25" Canvas.Top="25" Width="50" Height="50" /> <Rectangle Panel.ZIndex="2" Fill="GREEN" Canvas.Left="50" Canvas.Top="50" Width="50" Height="50" /> <Rectangle Panel.ZIndex="4" Fill="Blue" Canvas.Left="75" Canvas.Top="75" Width="50" Height="50" /> </Canvas> COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 33 MEDIA VISA EN BILD <Grid> <Image Source="images/mahmud.jpg" /> </Grid> COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 34 17

IMAGE EGENSKAPEN STRETCH <Image Source="images/mahmud.jpg" Stretch="none" /> <Image Source="images/mahmud.jpg" Stretch="Fill" /> COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 35 MEDIA SPELA UPP MP3 <Grid> <MediaElement Name="musik" Source="mp3/Musik.mp3" LoadedBehavior="Manual" /> <Button Name="spela" Margin="125,155,146,36" Click="spela_Click">Spela</Button> </Grid> private void spela_click(object sender, RoutedEventArgs e) { musik.play(); COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 36 18

MEDIA SPELA UPP VIDEO <Grid> <MediaElement Name="video" Source="video\video.mp4" LoadedBehavior="Manual" /> <Button Name="spela" Width="100" Height="50" Click="spela_Click" HorizontalAlignment="Right" VerticalAlignment="Bottom"Opacity="0.5">Spela </Button> </Grid> private void spela_click(object sender, RoutedEventArgs e) { video.play(); Tips! www.sample-videos.com COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 37 ÖVNINGAR 1. Rita en linje i en Canvas från punkt (10,20) till punkt (100,20). 2. Rita en kvadrat (100x100). Ändra bakgrundsfärgen till svart. 3. Rita en cirkel med diameter 100. 4. Visa en valfri bild i en knapp. 5. Skapa en enkel WPF-applikationer som spelar upp MP3-filer. COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 38 19