From 2a6ae05a0cd172510e0f1c47b6803fd157e38ab5 Mon Sep 17 00:00:00 2001 From: Lukasz Baldyga Date: Wed, 21 Oct 2020 16:22:53 +0100 Subject: [PATCH] The window now correctly repaints --- .../Advanced Software Engineering/Commander.cs | 8 +++++++- .../DrawPreview.Designer.cs | 6 ++++-- .../Advanced Software Engineering/DrawPreview.cs | 13 ++++++++++++- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Advanced Software Engineering/Advanced Software Engineering/Commander.cs b/Advanced Software Engineering/Advanced Software Engineering/Commander.cs index 1cdc486..8ff78fd 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Commander.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Commander.cs @@ -12,7 +12,11 @@ namespace Advanced_Software_Engineering { List commands = new List(); Drawer drawer; - public void DrawAllCommands() { + public void DrawAllCommands(Graphics updateGraphicsElement) { + graphics = updateGraphicsElement; + drawer.ResetDrawer(); + drawer.SetGraphics(updateGraphicsElement); + foreach (Verb verb in this.commands) { verb.ExecuteVerb(); } @@ -110,6 +114,8 @@ namespace Advanced_Software_Engineering { brush = new SolidBrush(defaultColor); } + public void SetGraphics(Graphics graphics) => this.graphics = graphics; + public void MovePen(Point point) => penPosition = point; public Point GetPenPosition() => new Point(penPosition.X, penPosition.Y); diff --git a/Advanced Software Engineering/Advanced Software Engineering/DrawPreview.Designer.cs b/Advanced Software Engineering/Advanced Software Engineering/DrawPreview.Designer.cs index abb7d25..941f857 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/DrawPreview.Designer.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/DrawPreview.Designer.cs @@ -58,11 +58,13 @@ // // panel1 // + this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); this.panel1.BackColor = System.Drawing.Color.White; - this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; this.panel1.Location = new System.Drawing.Point(0, 0); this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(537, 501); + this.panel1.Size = new System.Drawing.Size(537, 474); this.panel1.TabIndex = 2; this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.DrawPreviewPane_Paint); // diff --git a/Advanced Software Engineering/Advanced Software Engineering/DrawPreview.cs b/Advanced Software Engineering/Advanced Software Engineering/DrawPreview.cs index f8cd222..e31f818 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/DrawPreview.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/DrawPreview.cs @@ -16,6 +16,8 @@ namespace Advanced_Software_Engineering Graphics graphics; Commander commander; + int repaintCount = 0; + /// /// The draw preview window. /// @@ -27,6 +29,7 @@ namespace Advanced_Software_Engineering InitializeComponent(); SettingsAndHelperFunctions.NumberOfWindows++; graphics = panel1.CreateGraphics(); + graphics.ResetClip(); commander = new Commander(graphics); } @@ -34,6 +37,7 @@ namespace Advanced_Software_Engineering InitializeComponent(); SettingsAndHelperFunctions.NumberOfWindows++; graphics = panel1.CreateGraphics(); + graphics.ResetClip(); commander = new Commander(graphics, commands); //disable components @@ -47,9 +51,15 @@ namespace Advanced_Software_Engineering Dispose(); } + private void DrawPreviewPane_Paint(object sender, EventArgs e) { + DrawPreviewPane_Paint(sender, null); + } + private void DrawPreviewPane_Paint(object sender, PaintEventArgs e) { - commander.DrawAllCommands(); + graphics = panel1.CreateGraphics(); + commander.DrawAllCommands(graphics); + Console.WriteLine("Graphics repainted " + ++repaintCount + "times"); } private void SubmitCommand(object sender, EventArgs e) @@ -65,5 +75,6 @@ namespace Advanced_Software_Engineering public void RemoveAllCommands() { commander.RemoveAllCommands(); } + } }