De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Hoofdstuk 3 Methoden om te tekenen. Methode-aanroep methode uit de klasse Graphics andere methoden uit Graphics void TekenScherm(object o, PaintEventArgs.

Verwante presentaties


Presentatie over: "Hoofdstuk 3 Methoden om te tekenen. Methode-aanroep methode uit de klasse Graphics andere methoden uit Graphics void TekenScherm(object o, PaintEventArgs."— Transcript van de presentatie:

1 Hoofdstuk 3 Methoden om te tekenen

2 Methode-aanroep methode uit de klasse Graphics andere methoden uit Graphics 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 ); }

3 Methoden uit Graphics nDrawString nFillRectangle nFillEllipse nDrawImage hallo x y nDrawLine nDrawRectangle nDrawEllipse

4 Methoden uit Graphics nDrawString nFillRectangle nFillEllipse nDrawImage hallo x y nDrawLine nDrawRectangle nDrawEllipse Pen parameter voor de kleur Brush parameter voor de kleur

5 Klassen en objecten nKlasse beschrijft mogelijkheden van object umethoden uproperties methode uit de klasse Graphics van object gr Graphics gr; gr = pea.Graphics; gr. DrawLine ( Pens.Red, 10,10, 20,20); string s; s = Console.ReadLine();... s. Length... property uit de klasse string van object s nObjecten ukunnen dingen doen uhebben geheugen

6 Tekenen 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.DrawRectangle( Pens.Black, 0, 0, 200, 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 ); compositie met blauw en rood (vrij naar Piet Mondriaan)

7 Tekening aanpassen nAanpassen van de dikte van de balken nAanpassen van de hoogte van het plaatje nAanpassen van de breedte van het plaatje 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.DrawRectangle( Pens.Black, 0, 0, 200, 100 ); gr.FillRectangle( Brushes.Black, 0, 40, 200, 10 ); gr.FillRectangle( Brushes.Black, 0, 70, 200, 10 ); gr.FillRectangle( Brushes.Red, 100, 0, 100, 40 ); gr.FillRectangle( Brushes.Blue, 0, 50, 10, 20 ); erg veel werk...

8 Variabelen 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 ); balk = 10; breedte = 200; hoogte = 100; int balk, breedte, hoogte; gebruik van variabelen toekennings- opdrachten: variabelen krijgen een waarde declaratie: aankondigen van variabelen en hun type type int: geheel getal

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

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

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

12 Syntax van declaratie type klasse naam int string declaratie naamtype, =expressieconst ; var

13 Plaats van een declaratie blok declaratie opdracht {}

14 Variabelen gr.FillRectangle( Brushes.Black, 10, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 50, 0, 10, 100 ); gr.FillRectangle( Brushes.Black, 90, 0, 10, 100 ); int balk, breed, hoog; balk=10; breed=200; hoog=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 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 ); int balk, breed, hoog; balk=10; breed=200; hoog=100; x1x2x3 y1 y2 int x1, x2, x3, y1, y2; x1=10; x2=50; x3=90; y1=40; y2=70;

16 Variabelen gr.FillRectangle( Brushes.Black, x1, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, x2, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, x3, 0, balk, hoog ); int balk, breed, hoog; balk=10; breed=200; hoog=100; x1x2x3 y1 y2 int x1, x2, x3, y1, y2; x1=10; x2=50; x3=90; y1=40; y2=70; 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 gr.FillRectangle( Brushes.Black, x1, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, x2, 0, balk, hoog ); gr.FillRectangle( Brushes.Black, x3, 0, balk, hoog ); int balk, breed, hoog; balk=10; breed=200; hoog=100; x1x2x3 y1 y2 int x1, x2, x3, y1, y2; x1=10; x2=50; x3=90; y1=40; y2=70; 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 nExpressie: stukje programma met een waarde nGebruik van expressies: uRechterkant van een toekennings-opdracht uParameter van een methode Expressies x3 = x2+40 ; gr.FillRectangle(Brushes.Blue, 0, y1+balk, x1, y2-(y1+balk) ) ;

19 expressie Opbouw van expressies nconstante nvariabele n... operator... n(... ) 5 hoogte x + y (y + 1) + 1 x - expressie

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

21 Prioriteit van operatoren nVermenigvuldigen gaat voor optellen nBij gelijke prioriteit: van links naar rechts nWil je ’t anders: zet haakjes * 3 geeft 7 en delen en aftrekken geeft 3 (1+2) * 3 geeft 9

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

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

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

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

26 Het type van een expressie n98765 n"Hallo" nbreedte n n"Hallo " + naam nnaam.Length n"Hallo " + naam.Length nBrushes.Black int string Brush int string int string type klasse naam int string

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

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

29 Mengkleuren nnew Color(255, 0, 0) nnew Color(255, 255, 0) nnew Color(255, 64, 0) nnew Color(255, 128, 0) nnew Color(255, 192, 0)

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

31 Programma nasd 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()); }

32 Programma nasd 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()); } /* Dit programma tekent een Mondriaan-like "compositie met rood en blauw” */ // posities van de lijnen // zwarte balken // gekleurde vakken met commentaar

33 Commentaar nTekst voor de menselijke lezer, genegeerd door de compiler nTwee vormen: uvan /* tot */ uvan // tot einde regel

34 Hoofdstuk 3.6 Methode- declaraties

35 Tekenen gr.DrawRectangle(p,20,60,40,40); gr.DrawLine(p,20,60,40,40); gr.DrawLine(p,40,40,60,60); 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); public void TekenScherm(object o, PaintEventArgs pea) { Graphics gr = pea.Graphics; Pen p = Pens.Black; } grote bende coördinaten!

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

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

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

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

40 Meer parameters gr.DrawRect (pen,… ); gr.DrawLine (pen,… ); gr.DrawLine (pen,… ); } x, y-br,br, br int tx, ty; tx = x + br/2; ty = y – br – br/2; x, y-br, tx, ty tx, ty, x+br, y-br private void tekenHuis (Graphics gr, … ) { int x, int y, int br) this. tekenHuis (pea.Graphics, …); this. tekenHuis (pea.Graphics, …); this. tekenHuis (pea.Graphics, …); } public void TekenScherm (object o, PaintEventArgs pea) { (x,y)br (tx,ty) 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 Publieksvraag nSchrijf 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 straal private void tekenCirkel { } gr. FillEllipse(br, cx–r, cy–r, 2*r, 2*r ); (Graphics gr, Brush br, int cx, int cy, int r)

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

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


Download ppt "Hoofdstuk 3 Methoden om te tekenen. Methode-aanroep methode uit de klasse Graphics andere methoden uit Graphics void TekenScherm(object o, PaintEventArgs."

Verwante presentaties


Ads door Google