Hoofdstuk 3 Methoden om te tekenen.

Slides:



Advertisements
Verwante presentaties
Het type int Tekenen met Java operatoren
Advertisements

Hoofdstuk 2 Hallo, C# !.
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Hoofdstuk 8 Objecten en klassen.
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Consoletoepassing Variabelen Klassen
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Hoorcollege 2 Basis gameprogrammeren. Soorten programma’s Console- applicatie.
Hoorcollege 4 Objecten en methoden. Eigen methode toevoegen class Painter : Game { public void HandleInput() { … } protected override void Update(GameTime.
Variabelen en berekeningen
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
Hoorcollege 3 Game assets, Invoer verwerken. Tutorlunch GroepTutorStutorZaal UPaul BergervoetBob BestBBG 001 VMarries van de HoefSander VerkuilBBG 731.
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Hoofdstuk 7 Herhaling Nieuw!. while ( x
Opgave 1a ncompiler: vertaalt broncode naar machine-uitvoerbare code ninterpreter: voert broncode direct uit.
Hoofdstuk 3 Tekenen en rekenen.
Hoofdstuk 4 Nieuwe methoden. Tekenen g.drawRect(20,60,40,40); g.drawLine(20,60,40,40); g.drawLine(40,40,60,60); g.drawRect(70,60,40,40); g.drawLine(70,60,90,40);
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Imperatief programmeren nJeroen Fokker. Wat heb je nodig? nCollegediktaat ukopen bij A-Eskwadraat (BBG-238) uof zelf downloaden en uitprinten nSolis-id.
Declaratie en toekenningen nEén keer declarareren nMogelijk meerdere toekenningen int x; x = 100; x = 250; x = x + 1; x = 2 * x; int x = 100; x = 100;
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Hoofdstuk 2 Hallo, C# !. Opbouw broncode nOpdrachten om het geheugen te veranderen nOpdrachten zijn gegroepeerd in methoden nMethoden zijn gegroepeerd.
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
Soorten programma’s nConsole- applicatie. Soorten programma’s nConsole- applicatie nWindows- applicatie.
Eerste deeltentamen nNagekeken werk ligt voor in de zaal nNeem je eigen werk mee: in het college wordt het besproken nVragen over de beoordeling: in de.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 3 inleveropdrachten) college Tent. 1 Tent. 3 college prakt. 1 prakt. 3 prakt.
Resources. Kompas } { protected override void OnDraw(Canvas canv) { base.OnDraw(canv); } public KompasView(Context c) : base(c) { } class KompasView :
Programma opdrachten methoden klasse variabelen en Geheugen objecten klasse zijn gegroepeerd in hebben als type veranderen bewerken.
Windows-applicatie class HalloWin1 { static void Main ( ) { } Form scherm; scherm = new Form( ); Application.Run(scherm); using System.Windows.Forms; scherm.Text.
GUI Graphical User Interface. Wat is een Graphical User Interface Mooi Gebruiksvriendelijk Veel denkwerk.
Syntax van opdrachten opdracht (), ;expressie klasse naam object expressie. methode naam =expressie;variabele property naam += returnexpressie; if)(expressieopdrachtblok.
Meer constructormethodes in klasse Kleur { class Kleur } public byte Rood, Groen, Blauw; public Kleur( byte r, byte g, byte b ) { } Rood=r; Groen=g; Blauw=b;
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Activity Bij het starten van een app:
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Keuzeopdrachten
Hoofdstuk 9.2 Strings.
Letterfrequentie turven
Gameprogrammeren: Variabelen, declaraties en toekenningen
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Gameprogrammeren: Expressies
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Methoden
Arjan Egges & Paul Bergervoet
vandaag èn vrijdag deadline maandag 12 dec.
Gameprogrammeren: Programmastructuur
Basis Gameprogrammeren
Declaratie Declaratie reserveert geheugenruimte
Gameprogrammeren: Game Basics
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Voorbeeld: Simulatie van bewegende deeltjes
Wat gaan we doen? Theorie (14 colleges + 3 deeltentamens)
Voortborduren op eerder gedaan werk
Practicum: schets-editor
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Klassen en objecten
Exceptions Exception:
Eerste deeltentamen Nagekeken werk ligt voor in de zaal
Software Development fundamentals
Transcript van de presentatie:

Hoofdstuk 3 Methoden om te tekenen

Methode-aanroep void TekenScherm(object o, PaintEventArgs pea) { Graphics gr; gr = pea.Graphics; gr . DrawString ("Hallo!", new Font("Tahoma", 30) , Brushes.Blue, 10, 20 ); gr . FillRectangle (Brushes.Red, 10,20, 50,60 ); gr . DrawLine (Pens.Black, 70,30, 20,20 ); } methode uit de klasse Graphics andere methoden uit Graphics

Methoden uit Graphics DrawString DrawLine DrawRectangle DrawEllipse x y DrawString hallo DrawLine DrawRectangle DrawEllipse FillRectangle FillEllipse DrawImage

Methoden uit Graphics DrawString DrawLine DrawRectangle DrawEllipse Pen parameter voor de kleur x y DrawString hallo DrawLine DrawRectangle Brush parameter voor de kleur Brush parameter voor de kleur DrawEllipse FillRectangle FillEllipse DrawImage

Klassen en objecten Klasse beschrijft mogelijkheden van object methode uit de klasse Graphics van object gr Klasse beschrijft mogelijkheden van object methoden properties Graphics gr; gr = pea.Graphics; gr . DrawLine ( Pens.Red , 10,10, 20,20); string s; s = Console.ReadLine(); ... s . Length ... Objecten kunnen dingen doen hebben geheugen property uit de klasse string van object s

compositie met blauw en rood (vrij naar Piet Mondriaan) Tekenen compositie met blauw en rood (vrij naar Piet Mondriaan) gr.DrawRectangle( Pens.Black, 0, 0, 200, 100 ); gr.FillRectangle( Brushes.Black, 10, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 50, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 90, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 0, 40, 200, 10 ); gr.FillRectangle( Brushes.Black, 0, 70, 200, 10 ); gr.FillRectangle( Brushes.Blue, 0, 50, 10, 20 ); gr.FillRectangle( Brushes.Red, 100, 0, 100, 40 );

Tekening aanpassen Aanpassen van de dikte van de balken Aanpassen van de hoogte van het plaatje Aanpassen van de breedte van het plaatje gr.DrawRectangle( Pens.Black, 0, 0, 200, 100 ); erg veel werk... gr.FillRectangle( Brushes.Black, 10, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 50, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 90, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 0, 40, 200, 10 ); gr.FillRectangle( Brushes.Black, 0, 70, 200, 10 ); gr.FillRectangle( Brushes.Blue, 0, 50, 10, 20 ); gr.FillRectangle( Brushes.Red, 100, 0, 100, 40 );

Variabelen declaratie: aankondigen van variabelen en hun type type int: geheel getal int balk, breedte, hoogte; toekennings- opdrachten: variabelen krijgen een waarde balk = 10; breedte = 200; hoogte = 100; gr.FillRectangle( Brushes.Black, 10, 0, balk, hoogte ); gr.FillRectangle( Brushes.Black, 50, 0, balk, hoogte ); gr.FillRectangle( Brushes.Black, 90, 0, balk, hoogte ); gr.FillRectangle( Brushes.Black, 0, 40, breedte, balk ); gr.FillRectangle( Brushes.Black, 0, 70, breedte, balk ); gebruik van variabelen

Variabelen declaratie: aankondigen van variabelen en hun type type string: tekst string naam, groet; toekennings- opdrachten: variabelen krijgen een waarde naam = Console.ReadLine(); groet = "Hallo " + naam + "!"; Console.WriteLine(groet); gebruik van variabelen

Variabelen declaratie: aankondigen van variabelen en hun type type Label: opschrift Label groet; toekennings- opdrachten: variabelen krijgen een waarde groet = new Label (); groet . Text = "Hallo"; this.Controls . Add (groet); gebruik van variabelen

Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;

Syntax van declaratie declaratie const = expressie var type naam ; , klasse naam int string

Plaats van een declaratie blok declaratie { } opdracht

Variabelen int balk, breed, hoog; balk=10; breed=200; hoog=100; gr.FillRectangle( Brushes.Black, 10, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 50, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 90, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 0, 40, 200, 10 ); gr.FillRectangle( Brushes.Black, 0, 70, 200, 10 ); gr.FillRectangle( Brushes.Blue, 0, 50, 10, 20 ); gr.FillRectangle( Brushes.Red, 100, 0, 100, 40 );

Variabelen x1 x2 x3 y1 y2 int balk, breed, hoog; int x1, x2, x3, y1, y2; x1=10; x2=50; x3=90; y1=40; y2=70; balk=10; breed=200; hoog=100; gr.FillRectangle( Brushes.Black, 10, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, 50, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, 90, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, 0, 40, breed, balk ); gr.FillRectangle( Brushes.Black, 0, 70, breed, balk ); gr.FillRectangle( Brushes.Blue, 0, 50, 10, 20 ); gr.FillRectangle( Brushes.Red, 100, 0, 100, 40 );

Variabelen x1 x2 x3 y1 y2 int balk, breed, hoog; int x1, x2, x3, y1, y2; x1=10; x2=50; x3=90; y1=40; y2=70; balk=10; breed=200; hoog=100; gr.FillRectangle( Brushes.Black, x1, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, x2, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, x3, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, 0, y1, breed, balk ); gr.FillRectangle( Brushes.Black, 0, y2, breed, balk ); gr.FillRectangle( Brushes.Blue, 0, 50, 10, 20 ); gr.FillRectangle( Brushes.Red, 100, 0, 100, 40 );

Variabelen x1 x2 x3 y1 y2 int balk, breed, hoog; int x1, x2, x3, y1, y2; x1=10; x2=50; x3=90; y1=40; y2=70; balk=10; breed=200; hoog=100; gr.FillRectangle( Brushes.Black, x1, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, x2, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, x3, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, 0, y1, breed, balk ); gr.FillRectangle( Brushes.Black, 0, y2, breed, balk ); gr.FillRectangle( Brushes.Blue, 0, y1+balk, x1, y2-y1-balk ); gr.FillRectangle( Brushes.Red, x3+balk, 0, br-(x3+balk), y1 );

Expressies Expressie: stukje programma met een waarde Gebruik van expressies: Rechterkant van een toekennings-opdracht Parameter van een methode x3 = x2+40 ; gr.FillRectangle(Brushes.Blue , 0, y1+balk, x1, y2-(y1+balk) ) ;

Opbouw van expressies constante variabele ... operator ... ( ... ) 5 hoogte ... operator ... x + y + 1 ( ... ) (y + 1) x - expressie expressie expressie

bij deling van int-waarden: cijfers achter de komma worden afgekapt! Operatoren + optellen - aftrekken * vermenigvuldigen / delen bij deling van int-waarden: cijfers achter de komma worden afgekapt! % rest bij deling 14 / 3 geeft 4 want 14 is 4*3 + 2 14 % 3 geeft 2

Prioriteit van operatoren Vermenigvuldigen gaat voor optellen en delen en aftrekken 1 + 2 * 3 geeft 7 Bij gelijke prioriteit: van links naar rechts 10 - 5 - 2 geeft 3 Wil je ’t anders: zet haakjes (1+2) * 3 geeft 9

Syntax van expressies expressie getal ” ” symbool variabele expressie operator expressie ( expressie )

Gebruik van expressies in opdrachten klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;

Gebruik van expressies in opdrachten klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;

Gebruik van expressies in opdrachten en expressies klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ; expressie constante operator ( ) variabele

Het type van een expressie 98765 "Hallo" breedte 67890+1 "Hallo " + naam naam.Length "Hallo " + naam.Length Brushes.Black int type klasse naam int string string int int string int string Brush

Het type van een expressie Brushes.Black Brush Pens.Blue Pen new Form() Form new Font("Arial",10) Font new Pen(Brushes.Red, 5) Pen new HatchBrush(HatchStyle.ZigZag , Color.Blue, Color.Red) Brush new Color(255, 128, 0) Color

Kleuren Color(...) (0,255,0) (255,0,0) (0,0,255) (0,0,0) (255,255,0) (255,255,255) (0,255,255) (255,0,255) (0,0,255) (0,0,0)

Mengkleuren new Color(255, 0, 0) new Color(255, 64, 0)

-syntax expressie getal ” ” symbool variabele expressie operator ( expressie ) ( ) , expressie new klasse naam klasse naam methode object expressie . property naam this

Programma asd Graphics gr = pea.Graphics; using System.Windows.Forms; using System.Drawing; class Mondriaan : Form { Mondriaan() this.Text = "Mondriaan"; this.BackColor = Color.White; this.ClientSize = new Size(200, 100); this.Paint += this.tekenScherm; } void tekenScherm(object obj, PaintEventArgs pea) int breedte, hoogte, balk, x1, x2, x3, y1, y2; breedte = pea.ClipRectangle.Width; hoogte = pea.ClipRectangle.Height; x1 = 10; x2 = 50; x3 = 90; y1 = 40; y2 = 70; balk = 10; Graphics gr = pea.Graphics; gr.FillRectangle(Brushes.Black, x1, 0, balk, hoogte); gr.FillRectangle(Brushes.Black, x2, 0, balk, hoogte); gr.FillRectangle(Brushes.Black, x3, 0, balk, hoogte); gr.FillRectangle(Brushes.Black, 0, y1, breedte,balk); gr.FillRectangle(Brushes.Black, 0, y2, breedte,balk); gr.FillRectangle(Brushes.Blue, 0, y1 + balk, x1, y2 - (y1 + balk)); gr.FillRectangle(Brushes.Red, x3+balk, 0, breedte-(x3+balk), y1); static void Main() Application.Run( new Mondriaan()); asd

Programma met commentaar asd /* Dit programma tekent een Mondriaan-like "compositie met rood en blauw” */ using System.Windows.Forms; using System.Drawing; class Mondriaan : Form { Mondriaan() this.Text = "Mondriaan"; this.BackColor = Color.White; this.ClientSize = new Size(200, 100); this.Paint += this.tekenScherm; } void tekenScherm(object obj, PaintEventArgs pea) int breedte, hoogte, balk, x1, x2, x3, y1, y2; breedte = pea.ClipRectangle.Width; hoogte = pea.ClipRectangle.Height; x1 = 10; x2 = 50; x3 = 90; y1 = 40; y2 = 70; balk = 10; Graphics gr = pea.Graphics; gr.FillRectangle(Brushes.Black, x1, 0, balk, hoogte); gr.FillRectangle(Brushes.Black, x2, 0, balk, hoogte); gr.FillRectangle(Brushes.Black, x3, 0, balk, hoogte); gr.FillRectangle(Brushes.Black, 0, y1, breedte,balk); gr.FillRectangle(Brushes.Black, 0, y2, breedte,balk); gr.FillRectangle(Brushes.Blue, 0, y1 + balk, x1, y2 - (y1 + balk)); gr.FillRectangle(Brushes.Red, x3+balk, 0, breedte-(x3+balk), y1); static void Main() Application.Run( new Mondriaan()); asd // zwarte balken // gekleurde vakken // posities van de lijnen

Commentaar Tekst voor de menselijke lezer, genegeerd door de compiler Twee vormen: van /* tot */ van // tot einde regel

Hoofdstuk 3.6 Methode-declaraties

grote bende coördinaten! Tekenen public void TekenScherm(object o, PaintEventArgs pea) { Graphics gr = pea.Graphics; Pen p = Pens.Black; gr.DrawRectangle(p,20,60,40,40); gr.DrawLine(p,20,60,40,40); gr.DrawLine(p,40,40,60,60); grote bende coördinaten! gr.DrawRectangle(p,70,60,40,40); gr.DrawLine(p,70,60,90,40); gr.DrawLine(p,90,40,110,60); gr.DrawRectangle(p,120,40,60,60); gr.DrawLine(p,120,40,150,10); gr.DrawLine(p,150,10,180,40); }

Aanroep van een methode voert opdrachten uit in de body daarvan Nieuwe methoden Methode: groepje opdrachten met een naam private void tekenHuis(…) { … . DrawRectangle (…); … . DrawLine (…); … . DrawLine (…); } public void TekenScherm (object o, PaintEventArgs pea) { … . tekenHuis (…); … . tekenHuis (…); … . tekenHuis (…); } Aanroep van een methode voert opdrachten uit in de body daarvan

Parameters welk Graphics-object nemen deze methoden onder handen? private void tekenHuis (…) { (Graphics gr, … ) gr … . DrawRectangle (…); … . DrawLine (…); … . DrawLine (…); parameter declareren } public void TekenScherm (object o, PaintEventArgs pea) { en bij aanroep meegeven … . tekenHuis (…); … . tekenHuis (…); … . tekenHuis (…); (pea.Graphics, …); }

Het object this class Huizen : Form { } private void tekenHuis (Graphics gr, …) { gr . DrawRectangle (…); gr . DrawLine (…); gr . DrawLine (…); welk ……… - object nemen deze methoden onder handen? Huizen } public void TekenScherm (object o, PaintEventArgs pea) { this: het object dat TekenScherm ook al onder handen heeft … . tekenHuis (pea.Graphics, …); … . tekenHuis (pea.Graphics, …); … . tekenHuis (pea.Graphics, …); this this this }

teken driemaal een net iets ander huis Meer parameters teken driemaal een net iets ander huis nog meer parameters! public void TekenScherm (object o, PaintEventArgs pea) { this . tekenHuis (pea.Graphics, …); this . tekenHuis (pea.Graphics, …); this . tekenHuis (pea.Graphics, …); 20, 100, 40); 70, 100, 40); 120, 100, 60); }

Meer parameters private void tekenHuis (Graphics gr, … ) { int x, int y, int br) int tx, ty; tx = x + br/2; ty = y – br – br/2; (tx,ty) gr.DrawRect (pen, … ); gr.DrawLine (pen, … ); gr.DrawLine (pen, … ); x, y-br, br, br x, y-br, tx, ty tx, ty, x+br, y-br } (x,y) br public void TekenScherm (object o, PaintEventArgs pea) { this . tekenHuis (pea.Graphics, …); this . tekenHuis (pea.Graphics, …); this . tekenHuis (pea.Graphics, …); 20, 100, 40); 70, 100, 40); 120, 100, 60); }

Huizen... int afdak = breedte / 6; Pen pen = new Pen(Color.DarkRed, 3); Brush br = new HatchBrush(HatchStyle.HorizontalBrick , Color.Silver, Color.Red );

150 Publieksvraag 100 50 Schrijf een methode tekenCirkel die je zo kunt aanroepen: public void TekenScherm (object o, PEA pea) { } this.tekenCirkel(pea.Graphics , Brushes.Black, 150, 100, 50); midden midden straal private void tekenCirkel { } (Graphics gr, Brush br , int cx, int cy, int r) gr . FillEllipse(br, cx–r, cy–r, 2*r, 2*r );

en des te lastiger aan te roepen... Flexibiliteit Hoe meer parameters, des te flexibeler de methode private void tekenHuis (Graphics gr, int x, int y, int br, int h, int dakh, Brush kl, Brush dakKl, … ) { dakh en des te lastiger aan te roepen... h (x,y) br

Flexibiliteit Veel parameters: Nu lastig om te programmeren In de toekomst misschien gemakkelijk uit te breiden Weinig parameters: Nu gemakkelijk om te programmeren In de toekomst misschien lastig te onderhouden