1 / 44

Hoofdstuk 3

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 );.

nyoko
Télécharger la présentation

Hoofdstuk 3

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Hoofdstuk 3 Methodenom 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 uitde klasseGraphics andere methodenuit Graphics

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

  4. x y Methoden uit Graphics Pen parametervoor de kleur • DrawString hallo • DrawLine Brush parametervoor de kleur Brush parametervoor de kleur • DrawRectangle • DrawEllipse • FillRectangle • FillEllipse • DrawImage

  5. Klassen en objecten methode uitde klasse Graphicsvan object gr • Klasse beschrijftmogelijkheden 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 uitde klasse stringvan object s

  6. Tekenen compositie metblauw 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 vanvariabelenen hun type type int: geheel getal int balk, breedte, hoogte; toekennings-opdrachten:variabelen krijgeneen 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 vanvariabelen

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

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

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

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

  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. x1 x2 x3 y1 y2 Variabelen 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. x1 x2 x3 y1 y2 Variabelen 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. x1 x2 x3 y1 y2 Variabelen 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 5 • variabele hoogte x + y • ... operator ... + 1 (y + 1) • ( ... ) x - expressie expressie expressie

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

  21. en delen en aftrekken Prioriteit van operatoren • Vermenigvuldigengaat voor optellen 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

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

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

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

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

  26. type klasse naam int string Het type van een expressie int • 98765 • "Hallo" • breedte • 67890+1 • "Hallo " + naam • naam.Length • "Hallo " + naam.Length • Brushes.Black 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) (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, 255, 0) • new Color(255, 64, 0) • new Color(255, 128, 0) • new Color(255, 192, 0)

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

  31. 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()); } } 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; Programma • asd

  32. 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()); } } 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; Programma met commentaar /* Dit programma tekent een Mondriaan-like "compositie met rood en blauw” */ // zwarte balken • asd // 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. 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 bendecoö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. Nieuwe methoden private void tekenHuis(…){ … . DrawRectangle (…); … . DrawLine (…); … . DrawLine (…);} • Methode:groepje opdrachten met een naam public void TekenScherm (object o, PaintEventArgs pea){ … . tekenHuis (…); … . tekenHuis (…); … . tekenHuis (…);} Aanroepvan een methode voert opdrachten uitin de body daarvan

  37. Parameters welk Graphics-objectnemen deze methodenonder handen? private void tekenHuis (…){ (Graphics gr, … ) … . DrawRectangle (…);… . DrawLine (…);… . DrawLine (…); gr gr gr parameterdeclareren } public void TekenScherm (object o, PaintEventArgs pea){ en bij aanroepmeegeven … . tekenHuis (…);… . tekenHuis (…);… . tekenHuis (…); (pea.Graphics, …); (pea.Graphics, …); (pea.Graphics, …); }

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

  39. Meer parameters teken driemaaleen net iets ander huis nog meerparameters! 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. (tx,ty) (x,y) br 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; 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 } 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 tekenCirkeldie je zo kunt aanroepen: publicvoid TekenScherm (object o, PEA pea){ } this.tekenCirkel(pea.Graphics , Brushes.Black, 150, 100, 50); midden midden straal privatevoid tekenCirkel { } (Graphics gr, Brush br, int cx, int cy, int r) gr . FillEllipse(br, cx–r, cy–r, 2*r, 2*r );

  43. dakh h (x,y) br 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, … ) { en des te lastigeraan te roepen...

  44. Veel parameters: Nu lastig om te programmeren In de toekomstmisschien gemakkelijkuit te breiden Weinig parameters: Nu gemakkelijk om te programmeren In de toekomstmisschien lastigte onderhouden Flexibiliteit

More Related