Download de presentatie
GepubliceerdClara Koster Laatst gewijzigd meer dan 9 jaar geleden
1
Hoofdstuk 3 Methoden om te tekenen
2
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
3
Methoden uit Graphics DrawString DrawLine DrawRectangle DrawEllipse
x y DrawString hallo DrawLine DrawRectangle DrawEllipse FillRectangle FillEllipse DrawImage
4
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
5
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
6
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 );
7
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 );
8
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
9
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
10
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
11
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;
12
Syntax van declaratie declaratie const = expressie var type naam ; ,
klasse naam int string
13
Plaats van een declaratie
blok declaratie { } opdracht
14
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 );
15
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 );
16
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 );
17
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 );
18
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) ) ;
19
Opbouw van expressies constante variabele ... operator ... ( ... ) 5
hoogte ... operator ... x + y + 1 ( ... ) (y + 1) x - expressie expressie expressie
20
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
21
Prioriteit van operatoren
Vermenigvuldigen gaat voor optellen en delen en aftrekken 1 + 2 * 3 geeft 7 Bij gelijke prioriteit: van links naar rechts geeft 3 Wil je āt anders: zet haakjes (1+2) * 3 geeft 9
22
Syntax van expressies expressie getal ā ā symbool variabele expressie
operator expressie ( expressie )
23
Gebruik van expressies in opdrachten
klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;
24
Gebruik van expressies in opdrachten
klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ;
25
Gebruik van expressies in opdrachten en expressies
klasse naam methode naam ( expressie ) ; . , object expressie property naam += variabele = expressie ; expressie constante operator ( ) variabele
26
Het type van een expressie
98765 "Hallo" breedte "Hallo " + naam naam.Length "Hallo " + naam.Length Brushes.Black int type klasse naam int string string int int string int string Brush
27
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
28
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)
29
Mengkleuren new Color(255, 0, 0) new Color(255, 64, 0)
30
-syntax expressie getal ā ā symbool variabele expressie operator
( expressie ) ( ) , expressie new klasse naam klasse naam methode object expressie . property naam this
31
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, , breedte-(x3+balk), y1); static void Main() Application.Run( new Mondriaan()); asd
32
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, , breedte-(x3+balk), y1); static void Main() Application.Run( new Mondriaan()); asd // zwarte balken // gekleurde vakken // posities van de lijnen
33
Commentaar Tekst voor de menselijke lezer, genegeerd door de compiler
Twee vormen: van /* tot */ van // tot einde regel
34
Hoofdstuk 3.6 Methode-declaraties
35
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); }
36
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
37
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, ā¦); }
38
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 }
39
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); }
40
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); }
41
Huizen... int afdak = breedte / 6;
Pen pen = new Pen(Color.DarkRed, 3); Brush br = new HatchBrush(HatchStyle.HorizontalBrick , Color.Silver, Color.Red );
42
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 );
43
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
44
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
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.