WINDOWSPROGRAMMERING LEKTION 1

Relevanta dokument
WINDOWS PRESENTATION FOUNDATION LEKTION 1

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

WINDOWSPROGRAMMERING LEKTION 2

Windows Forms Winstrand Development

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

ASP.NET Thomas Mejtoft

Objektorienterad programmering Föreläsning 2

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

Kursplanering Objektorienterad programmering

Innehållsförteckning

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

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Objektorienterad programmering

Lab5 för prgmedcl04 Grafik

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

Webbaserad GIS-klient för hantering av geologisk information

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

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

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Exempel på användning av arv: Geometriska figurer

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

TENTAMEN I DATAVETENSKAP

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

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

Lektion 2, Grundläggande funktioner i ASP.NET

Grafik i DrRacket AV TOMMY KARLSSON

INTRODUKTION TILL ANGULAR JS

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

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

Android översikt. TDDD80 Mobila och sociala applikationer

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

Agenda (obs! halvdag)

Laboration 1 Introduktion till Visual Basic 6.0

SgLib Simple Graphics Library

ID1004 Laboration 3, 5-6 November 2012

Innehållsförteckning

Övning Arbeta med klasser

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

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

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

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

Programvaruutveckling

PROGRAMMERINGSTEKNIK TIN212

Kursplanering Utveckling av webbapplikationer

PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC

Programvaruutveckling för nybörjare

Instruktioner för Articulate Studio 13

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.

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

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

Arv och polymorfism i Java

Migrera till PowerPoint 2010

Creo Customization. Lars Björs

Objektorienterad Systemutveckling Period 3

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

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

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

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

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

Joomla CMS Del 2 av 2

Laboration 3 GUI-programmering

ADOBE FLASH 8. Vad är egentligen Flash

TNK046 GIS - Databaser Laborationsuppgift 1 Introduktion till Microsoft Access 2007

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

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

Så här skriver du ditt första program i C++

Labb 3: ASP.NET 4.5 Anpassningar av användargränssnittet: Master Pages, Teman, och Kontroller

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

Produktkonfigurator EXAMENSARBETE Lucas Björkman Jimmy Erixon. Datateknik

OOP. vs procedural programming Design av interaktiv multimedia

Författare: Juha Söderqvist IT-GUI. Version 1.0. Datum

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

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

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

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

Principles of subclasses 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

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

Övning: Arbeta med Azure Explorer

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

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

Macromedia. Flash 8 Grundkurs.

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Bygga kurser för mobila enheter

Lektion Händelsehanterare

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012

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

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

Instruktioner för Articulate Storyline 2

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Skapa ett eget programnu! NU! Komplett med programvara och konkreta exempel! Patrice Pelland. Swedish Language Edition published by Docendo Sverige AB

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Övning Dictionary. Övning 1. Steg 1: På din virtuella maskin, starta Visual Studio.

Tentamen i Objektorienterad modellering och design

Transkript:

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

BETYGSKRITERIER För Godkänt (G) krävs att Studenten ska självständigt kunna utveckla enklare 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 applikationer med grafiska användargränssnitt i XAML och tillhörande databaskopplingar. 3 REKOMMENDERAD REFERENSLITTERATUR Titel: Illustrated WPF Författare: Daniel M. Solis ISBN: 9781430219101 4 2

TIPS HTTP://WWW.WPF-TUTORIAL.COM 5 INTRODUCTION TO WPF (VISUAL STUDIO 2015) PÅ MSDN HTTPS://MSDN.MICROSOFT.COM/EN-US/LIBRARY/MT149842(V=VS.110).ASPX 6 3

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. 7 WPF FINNS SEDAN.NET 3.X Bildkälla: : Illustrated WPF, sidan 14 8 4

VAD ÄR XAML? XAML står för Extensible Application Markup Language. XAML baseras på XML-syntax. XAML används i bl.a. WPF och UWP för att beskriva och definiera användargränssnittet (UI) t.ex. fönster, dialogrutor, figurer, grafik, animeringar m.m. 9 VAD ÄR UWP? UWP står för Universal Windows Platform. UWP är plattformshomogen (enhetlig) applikationsarkitektur som skapats av Microsoft och introducerades i Windows 10. Syftet med denna mjukvaruplattform är att bidra till att utveckla universella applikationer som körs på Windows 10. UWP är en del av Windows 10 så, UWP-program körs inte på tidigare Windows-versioner. Källa: https://en.wikipedia.org/wiki/universal_windows_platform 10 5

UNIVERSAL WINDOWS PLATFORM Källa: https://msdn.microsoft.com/windows/uwp/get-started/universal-application-platform-guide 11 WPF APPLICATION HELLO WORLD 12 6

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> 13 FILEN APP.XAML.CS using System.Windows; namespace WPF_Hello_World { /// <summary> /// Interaction logic for App.xaml /// </summary> public partial class App : Application { } } 14 7

FILEN APP.XAML.CS SKAPA ETT FÖNSTER DIREKT 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(); 15 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> 16 8

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> 17 KLASSEN WINDOW 18 9

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> 19 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 20 10

TEXTBLOCK <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="72"> Hej WPF! </TextBlock> 21 KNAPPAR <Grid> </Grid> <Button Name="knapp">Hello World</Button> 22 11

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!"); } } 23 SKAPA EN HÄNDELSE I XAML <Button Name="knapp" Click="knapp_Click"> Hello World </Button> Peek 24 12

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> 25 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 26 13

LAYOUT När du skapar ett användargränssnitt behöver du ordna kontroller efter position och storlek. 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. 27 CANVAS 28 14

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. Objekten kan placeras i valfri position. 29 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 30 15

BORDER <Canvas> </Canvas> <Border BorderBrush="Black" Width="100" Height="100" BorderThickness="10" CornerRadius="25" Canvas.Left="10" Canvas.Top="10"> </Border> 31 KAPSLADE ELEMENT <Grid> <Button Width="200" Height="100"> <Ellipse Fill="Yellow" Height="90" Width="190" /> </Button> </Grid> 32 16

ÖVNINGAR Rita en valfri ellips. Skapa en knapp som beräknar ellipsens area. Visa resultatet i en dialogruta med 2 decimaler. 33 <Grid> <Canvas Width="300" Margin="21,10,21,187"> <Ellipse Name="ellipse" Fill="Yellow" Height="100" Width="200" StrokeThickness="1" Stroke="Black" Canvas.Left="54" Canvas.Top="15"/> </Canvas> <Button Name="area" Margin="135,150,136,41" Click="area_Click">Beräkna area</button> </Grid> private void area_click(object sender, RoutedEventArgs e){ MessageBox.Show("Area = " + Math.Round(Math.PI * ellipse.height/2 * ellipse.width/2, 2)); } 34 17

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> 35 Ö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. 36 18

MEDIA VISA EN BILD <Grid> <Image Source="images/mahmud.jpg" /> </Grid> 37 IMAGE EGENSKAPEN STRETCH <Image Source="images/mahmud.jpg" Stretch="none" /> <Image Source="images/mahmud.jpg" Stretch="Fill" /> 38 19

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(); 39 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 40 20

ÖVNINGAR 1. Visa en valfri bild i en knapp. 2. Skapa en enkel WPF-applikationer som spelar upp MP3-filer. 41 21