Index: Riskeer/Integration/src/Riskeer.Integration.Forms/Views/AssemblyResultsOverviewCanvasView.cs =================================================================== diff -u -r74c106e69e540f960fb7df127bef26a92ba07fa7 -rf270fc1ede4d0e32027286c161c354c2b9ecd43c --- Riskeer/Integration/src/Riskeer.Integration.Forms/Views/AssemblyResultsOverviewCanvasView.cs (.../AssemblyResultsOverviewCanvasView.cs) (revision 74c106e69e540f960fb7df127bef26a92ba07fa7) +++ Riskeer/Integration/src/Riskeer.Integration.Forms/Views/AssemblyResultsOverviewCanvasView.cs (.../AssemblyResultsOverviewCanvasView.cs) (revision f270fc1ede4d0e32027286c161c354c2b9ecd43c) @@ -15,38 +15,42 @@ { public partial class AssemblyResultsOverviewCanvasView : UserControl, IView { - private readonly Pen pen; private double widthPerMeter; public AssemblyResultsOverviewCanvasView(AssessmentSection assessmentSection) { AssessmentSection = assessmentSection; InitializeComponent(); - - pen = new Pen(Color.Black, 2); } - protected override void OnLoad(EventArgs e) + protected override void OnResize(EventArgs e) { - Graphics g = pictureBox.CreateGraphics(); - - widthPerMeter = g.ClipBounds.Width / AssessmentSection.ReferenceLine.Length; - - var rowCounter = 0; - foreach (IFailureMechanism failureMechanism in AssessmentSection.GetFailureMechanisms().Where(fm => fm.InAssembly)) + Render(); + base.OnResize(e); + } + + private void Render() + { + using (var image = new Bitmap(pictureBox.Width, pictureBox.Height)) + using (var graphics = Graphics.FromImage(image)) + using (var pen = new Pen(Color.Black, 2)) { - if (failureMechanism is PipingFailureMechanism piping) + widthPerMeter = image.Width / AssessmentSection.ReferenceLine.Length; + var rowCounter = 0; + foreach (IFailureMechanism failureMechanism in AssessmentSection.GetFailureMechanisms().Where(fm => fm.InAssembly)) { - CreateRow(piping, PipingAssemblyFunc, rowCounter++, g); + if (failureMechanism is PipingFailureMechanism piping) + { + CreateRow(piping, PipingAssemblyFunc, rowCounter++, graphics, pen); + } + if (failureMechanism is GrassCoverErosionInwardsFailureMechanism gekb) + { + CreateRow(gekb, GrassCoverErosionInwardsAssemblyFunc, rowCounter++, graphics, pen); + } } - - if (failureMechanism is GrassCoverErosionInwardsFailureMechanism gekb) - { - CreateRow(gekb, GrassCoverErosionInwardsAssemblyFunc, rowCounter++, g); - } + pictureBox.Image?.Dispose(); + pictureBox.Image = (Bitmap) image.Clone(); } - - OnPaint(new PaintEventArgs(g, Rectangle.Ceiling(g.ClipBounds))); } public AssessmentSection AssessmentSection { get; } @@ -55,24 +59,25 @@ private void CreateRow(TFailureMechanism failureMechanism, Func performAssemblyFunc, - int rowNumber, Graphics graphics) + int rowNumber, Graphics graphics, Pen pen) where TFailureMechanism : IHasSectionResults where TSectionResult : FailureMechanismSectionResult { - var height = 10; + var height = 30; var xPosition = 0; int yPosition = height * rowNumber; - graphics.DrawRectangle(pen, new Rectangle(xPosition, yPosition, 10, height)); + graphics.DrawRectangle(pen, new Rectangle(xPosition, yPosition, 100, height)); - xPosition = 10; + xPosition = 100; foreach (TSectionResult sectionResult in failureMechanism.SectionResults) { FailureMechanismSectionAssemblyResult sectionAssemblyResult = AssemblyToolHelper.AssembleFailureMechanismSection( sectionResult, sr => performAssemblyFunc(sr, AssessmentSection)); var sectionWidth = (int) (widthPerMeter * sectionResult.Section.Length); + graphics.DrawRectangle(pen, new Rectangle(xPosition, yPosition, sectionWidth, height)); graphics.FillRectangle(new SolidBrush(AssemblyGroupColorHelper.GetFailureMechanismSectionAssemblyCategoryGroupColor( sectionAssemblyResult.AssemblyGroup)), xPosition, yPosition, sectionWidth, height);