De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Hoofdstuk 10.1 Toepassing: Bitmap-editor. nKlik punten op scherm nPlaatje verschuiven left, right, up, down nPlaatje bewerken clear, invert, bold, outline.

Verwante presentaties


Presentatie over: "Hoofdstuk 10.1 Toepassing: Bitmap-editor. nKlik punten op scherm nPlaatje verschuiven left, right, up, down nPlaatje bewerken clear, invert, bold, outline."— Transcript van de presentatie:

1 Hoofdstuk 10.1 Toepassing: Bitmap-editor

2 nKlik punten op scherm nPlaatje verschuiven left, right, up, down nPlaatje bewerken clear, invert, bold, outline n“Game of life”

3 Opdeling in klassen nHoofdscherm gebruikersinterface, menu’s, akties, files nBitmapControl tekenen van het plaatje op het scherm nBitMap plaatje in geheugen, operaties

4 Member-variabelen nclass Hoofdscherm uBitmapControl viewer; uMenuStrip menuStrip; nclass BitmapControl uBitMap model; nclass BitMap ubool [, ] vakjes; : Form : UserControl zelfgemaakt

5 Methoden Hoofdscherm nclass Hoofdscherm : Form uHoofdscherm uvergroten // eventhandler voor Resize uafsluiten // eventhandler voor "Close"-menu

6 Methoden BitmapControl nclass BitmapControl : UserControl uBitmapControl uteken// eventhandler voor Paint uklik// eventhandler voor MouseClick ustarten, stoppen // voor animatie-menu uuitvoeren // voor andere menu-keuzes

7 Methoden BitMap nclass BitMap uconstructorBitMap, BitMap upropertiesBreedte, Hoogte upunten zettenveranderKleur, vraagKleur uschuivenLeft, Right, Up, Down ubewerkenClear, Invert, Bold, Outline combineer game of lifeLife, buren

8 Methoden BitMap (versie 2) nclass BitMap : System.Drawing.Bitmap uconstructorBitMap, BitMap upropertiesBreedte, Hoogte upunten zettenveranderKleur, vraagKleur uschuivenLeft, Right, Up, Down ubewerkenClear, Invert, Bold, Outline combineer game of lifeLife, buren

9 class Hoofdscherm public Hoofdscherm( ) { } this. Text = "Bitmap Editor"; this. viewer = new BitmapControl(); this. menuStrip = new MenuStrip( ); this. maakMenu(); this. Controls. Add(menuStrip); this. Controls. Add(viewer); this. Resize += this.vergroten; this. vergroten(null, null); // meteen al even

10 class Hoofdscherm private void maakMenu( ) { ToolStripDropDownItem menu; } MenuStrip menuStrip; menu = new ToolStripDropDownItem("File"); menuStrip. Items. Add(menu); menu.DropDownItems.Add("Close", null, this.afsluiten); menu = new ToolStripMenuItem("Move"); menuStrip. Items. Add(menu); menu.DropDownItems.Add("Left", null, viewer.uitvoeren); BitmapControl viewer; menu.DropDownItems.Add("Right",null, viewer.uitvoeren); menu.DropDownItems.Add("Up", null, viewer.uitvoeren); menu.DropDownItems.Add("Down",null, viewer.uitvoeren);

11 class Hoofdscherm void vergroten (object o, EventArgs ea) { viewer.Location = new Point(10,40); viewer.Size = new Size (w, h); } int w = this.ClientSize.Width – 20; int h = this.ClientSize.Height – 50; void afsluiten (object o, EventArgs ea) { this.Close(); }

12 Methoden BitMap nclass BitMap uconstructorBitMap, BitMap upropertiesBreedte, Hoogte upunten zettenveranderKleur, vraagKleur uschuivenLeft, Right, Up, Down ubewerkenClear, Invert, Bold, Outline combineer game of lifeLife, buren

13 class BitMap public BitMap ( int w, int h ) { } vakjes = new bool [w, h]; public BitMap ( BitMap ander) { } public void verander ( int x, int y, bool b ) { } public bool vraag ( int x, int y ) { } vakjes[x, y] = b; return vakjes[x, y] ; vakjes = new bool [ander.Breedte, ander.Hoogte]; this.Kopieer(ander); public int Breedte { } get { return vakjes.GetLength(0); } property

14 class BitMap void combineer ( Bitmap ander { this. verander (x, y, ); for (int x=0; this.Breedte; x++) for (int y=0; y<this.Hoogte; y++) this.vraag(x,y)ander.vraag(x,y)comb (,) comb),Functie } void Clear ( ) { this.combineer(this, (a,b)=>false ); } void Invert ( ) { this.combineer(this, (a,b)=>!a ); } void Kopieer(Bitmap ander) { this.combineer(ander, (a,b)=>b ); } delegate bool Functie (bool, bool) ; nieuwe expressie: naamloze functie nieuwe type-declaratie: het type van een functie

15 class BitMap public void Left ( ) { } this.verander( x-1, y, this.vraag(x,y) ); for (int y=0; y<this.Hoogte; y++) for (int x=0 ; x<this.Breedte; x++) 1 { this.verander( this.Breedte-1, y, false ); }

16 class BitMap public void Right ( ) { } this.verander( x, y, this.vraag(x-1,y) ); for (int y=0; y<Hoogte; y++) for (int x=0 ; x<Breedte; x++) Breedte-1; x>0; x-- ) { this.verander( 0, y, false ); }

17 class BitMap public void Bold ( ) { BitMap ander; ander = new BitMap(this); ander. Left ( ); this. combineer (ander, (a,b)=>a||b ); ander = new BitMap(this); ander. Down ( ); } this. combineer (ander, (a,b)=>a||b );

18 class BitMap public void Outline ( ) { BitMap ander; ander = new BitMap(this); ander. Left ( ); ander. Down ( ); } this. combineer (ander, (a,b) => a != b );

19 class BitMap public void Life ( ) { BitMap oud; oud = new BitMap(this); this. verander (x, y, } int n = oud. buren(x,y); n==3 || n==2 && oud.vraag(x,y) ); for (int y=0; y<Hoogte; y++) for (int x=0; x<Breedte; x++) { }

20 class BitMap public int buren (int x, int y ) { int xl = x-1; int xr = x+1; int yb = y-1; int yo = y+1; return n; int n = 0; if ( this.isZwart(xl,yb) ) n++; if ( this.isZwart(x,yb) ) n++; if ( this.isZwart(xr,yb) ) n++; if ( this.isZwart(xl,y ) ) n++; if ( this.isZwart(xr,y ) ) n++; if ( this.isZwart(xl,yo) ) n++; if ( this.isZwart(x,yo) ) n++; if ( this.isZwart(xr,yo) ) n++; if (xl<0) xl += Breedte; if (xr>=breed) xr -= Breedte; if (yb<0) yb += Hoogte; if (yo>=hoog) yo -= Hoogte; xl xr yb yo

21 Game of Life meer-cellig “wezen” loopt! stabiel patroon

22 Methoden BitmapControl nclass BitmapControl : UserControl uBitmapControl uteken// eventhandler voor Paint uklik// eventhandler voor MouseClick ustarten, stoppen // voor animatie-menu uuitvoeren // voor andere menu-keuzes membervariabele: Bitmap model;

23 class BitmapControl { Bitmap model; public BitmapControl ( ) { } model = new Bitmap(20, 20); this. Paint += teken; this. MouseClick += klik;

24 class BitmapControl void teken ( object o, PEA pea ) { gr. FillRectangle (br, x, y, 1, 1); } Brush br; if (model.vraag(x,y)) br = Brushes.Red; elsebr = Brushes.White; for (int y=0; y<Hoogte; y++) for (int x=0; x<Breedte; x++) { } int d = this. Diameter; x*d, y*d, d, d );x*d+1, y*d+1, d-1, d-1 ); this. lijnen (gr, d); Graphics gr = pea.Graphics;

25 class BitmapControl public int Diameter { Size s = this. ClientSize; s.Width / model.Breedte return s.Height / model.Hoogte Math. min (, ); } get { }

26 class BitmapControl private void lijnen ( Graphics gr, int d) { // horizontale lijnen } // verticale lijnen Pen p = Color.Blue; gr. drawLine ( p, 0, y*d, model.Breedte*d, y*d ); for (int y=0; y <= Hoogte; y++) gr. drawLine ( p, x*d, 0, x*d, model.Hoogte*d ); for (int x=0; x <= Breedte; x++)

27 class BitmapControl void klik ( object o, MouseEventArgs mea ) { } mea. X mea. Y / diam int diam = this. Diameter; model. verander (, ); mea.Button==MouseButtons.Left this. Invalidate ( );

28 class BitmapControl void uivoeren ( object sender, EventArgs ea ) { } this. Invalidate ( ); String keus = sender.ToString(); if (keus=="Clear") this.model.Clear(); if (keus=="Left") this.model.Left(); if (keus=="Right") this.model.Right(); if (keus=="Up") this.model.Up(); if (keus=="Down") this.model.Down(); if (keus=="Step") this.model.Step();

29 class BitmapControl void starten ( object o, EventArgs ea ) { } void stoppen ( object o, EventArgs ea ) { } Thread animatie; animatie = new Thread(animatieFunctie); animatie. Start( ); void animatieFunctie( ) { } this.model.Life( ); this.Invalidate( ); while (true ) { } Thread.Sleep(50); (animatie!=null) { animatie = null;


Download ppt "Hoofdstuk 10.1 Toepassing: Bitmap-editor. nKlik punten op scherm nPlaatje verschuiven left, right, up, down nPlaatje bewerken clear, invert, bold, outline."

Verwante presentaties


Ads door Google