Presentation is loading. Please wait.

Presentation is loading. Please wait.

Toepassing: schets-editor

Similar presentations


Presentation on theme: "Toepassing: schets-editor"— Presentation transcript:

1 Toepassing: schets-editor
MDI- Container Menu SchetsWin Tools SchetsControl Akties

2 Schets: Klasse-ontwerp
SchetsEditor Control Button Base Button Program RadioButton Container Control Form Hoofdscherm SchetsWin UserControl SchetsControl System.Windows.Forms Schets System.Drawing Image Bitmap

3 Schets: Klasse-ontwerp
SchetsEditor ISchetsTool Control Button Base Startpunt Tool Button Program TekstTool RadioButton TweepuntTool Container Control Form Hoofdscherm LijnTool PenTool SchetsWin GumTool UserControl SchetsControl RechthTool System.Windows.Forms Schets VolRechthTool System.Drawing Image Bitmap

4 Member-variabelen class SchetsWin class SchetsControl class Schets { {
: Form : UserControl { { { MenuStrip strip; Schets schets; Bitmap bm; SchetsControl sc; Color kleur; ISchetsTool huidig; } } }

5 Schoonmaakwerk doen class SchetsWin class SchetsControl class Schets {
: Form : UserControl { { { MenuStrip strip; Schets schets; Bitmap bm; SchetsControl sc; Color kleur; void Teken (Graphics g) ISchetsTool huidig; void teken(...PEA p) SchetsWin() { gr.DrawImage (bm, 0, 0); { schets.Teken (p.Graphics); { sc = new SchetsControl(); } } this.maakAkties(); } void Schoon( ) void Schoon(...AE a) void maakAkties() { Graphics g = { schets.Schoon(); { Button b Graphics. FromImage(bm) = new Button(); this.Invalidate(); b.Text = "Clear"; } g.FillRectangle (White,0,0,w,h); b.Click += sc.Schoon; } } } } }

6 Tool kiezen class SchetsWin { } : Form SchetsControl sc;
MenuStrip strip; ISchetsTool huidig; void maakTools( ICollection<Tool> tools ) { foreach (Tool tool in tools) { RadioButton r = new RadioButton(); r.Text = tool.ToString(); r.Tag = tool; r.Click += this.klikTool; } } void klikTool ( object obj, AE ae ) { huidig = (ISchetsTool) ( (Button) obj ) . Tag } }

7 Tool gebruiken class SchetsWin interface ISchetsTool { { } } : Form
SchetsControl sc; { MenuStrip strip; ISchetsTool huidig; { SchetsWin ( ) void MuisVast( { sc = new SchetsControl ( ); SchetsControl s, sc.MousePress += this.muis; } Point p); void muis ( object o, MEA mea) { huidig.MuisVast( sc, mea.Location) } void klikTool ( object obj, AE ae ) { huidig = (ISchetsTool) ( (Button) obj ) . Tag } } }

8 Tool gebruiken class SchetsWin interface ISchetsTool { {
: Form SchetsControl sc; { MenuStrip strip; ISchetsTool huidig; { SchetsWin ( ) void MuisVast( { sc = new SchetsControl ( ); SchetsControl s, sc.MousePress += ( object o, MEA mea) => Point p); anonieme methode { huidig.MuisVast( sc, mea.Location); } } void klikTool ( object obj, AE ae ) { huidig = (ISchetsTool) ( (Button) obj ) . Tag } } }

9 Schets-tools (1) interface ISchetsTool {
} void muisVast ( SchetsControl s, Point p) ; void muisLos ( SchetsControl s, Point p) ; void muisDrag ( Schetscontrol s, Point p ) ; void Letter ( SchetsControl s, char k) ;

10 Schets-tools (2) abstract class StartpuntTool : ISchetsTool { }
Point startpunt ; Brush kwast ; virtual void MuisVast ( SchetsControl s, Point p) { startpunt = p; } virtual void MuisLost ( SchetsControl s, Point p) { kwast = new SolidBrush( s.Penkleur ); } abstract void MuisDrag ( SchetsControl s, Point p) ; abstract void Letter ( SchetsControl s, Point p) ;

11 Schets-tools (3) class TekstTool : StartpuntTool { }
ISchetsTool Startpunt Tool class TekstTool : StartpuntTool { } override void Letter ( SchetsControl s, char c) { } Graphics g = s . MaakBitmapGraphics(); g . DrawString( c, kwast, ..., startpunt ); startpunt.x += ……c….Width; override void MuisDrag ( SchetsControl s, Point p) { } override void MuisLos ( SchetsControl s, Point p) { }

12 Schets-tools (4) abstract class TweepuntTool : StartpuntTool { }
TekstTool Tweepunt Tool ISchetsTool Startpunt Tool abstract class TweepuntTool : StartpuntTool { } override void MuisDrag ( SchetsControl s, Point p) { } Graphics g = s . CreateGraphics(); this . Bezig (g, startpunt, p); override void MuisLos ( SchetsControl s, Point p) { Graphics g = s . MaakBitmapGraphics(); this . Compleet (g, startpunt, p); } abstract void Bezig (Graphics g, Point p1, Point p2) ; virtual void Compleet (Graphics g, Point p1, Point p2) { this . Bezig (g, p1, p2); }

13 Schets-tools (5) class RechthoekTool : TweepuntTool { }
TekstTool Tool Startpunt Tool Tweepunt Tool Rechthoek Tool class RechthoekTool : TweepuntTool { } override void Bezig ( Graphics g, Point p1, Point p2 ) { g . DrawRectangle(kwast, Punten2Rechthoek(p1,p2) ); } static Rectangle Punten2Rechthoek(Point p1, Point p2) return new Rectangle( { new Point( Math.Min(p1.X,p2.X), Math.Min(p1.Y,p2.Y)) new Size ( Math.Abs(p1.X-p2.X), Math.Abs(p1.Y-p2.Y)) ); }

14 Schets-tools (6) class VolRechthoekTool : RechthoekTool { }
TekstTool Tool Startpunt Tool Tweepunt Tool Rechthoek Tool VolRechth Tool class VolRechthoekTool : RechthoekTool { } override void Compleet ( Graphics g, Point p1, Point p2 ) { } g . FillRectangle(kwast, Punten2Rechthoek(p1,p2) );

15 Schets-tools (7) class LijnTool : TweepuntTool { }
TekstTool LijnTool Tool Startpunt Tool Tweepunt Tool Rechthoek Tool VolRechth Tool class LijnTool : TweepuntTool { } override void Bezig ( Graphics g, Point p1, Point p2 ) { } g . DrawLine( MaakPen(kwast,3), p1, p2 );

16 Schets-tools (8) class PenTool : LijnTool { }
TekstTool LijnTool PenTool Tool Startpunt Tool Tweepunt Tool Rechthoek Tool VolRechth Tool class PenTool : LijnTool { } override void MuisDrag ( SchetsControl s, Point p ) { } this . MuisLos (s, p); this . MuisVast (s, p);

17 Schets-tools (9) class GumTool : PenTool { }
TekstTool LijnTool PenTool GumTool Tool Startpunt Tool Tweepunt Tool Rechthoek Tool VolRechth Tool class GumTool : PenTool { } override void Bezig ( Graphics g, Point p1, Point p2 ) { } g . DrawLine( MaakPen(Brushes.White,7), p1, p2 );


Download ppt "Toepassing: schets-editor"

Similar presentations


Ads by Google