From a3e4ca9ea1205fcdf3a0fd1cccc5ee437c338791 Mon Sep 17 00:00:00 2001 From: Valeriano Alfonso Rodriguez Date: Wed, 1 Dec 2021 07:13:57 +0100 Subject: [PATCH] CGroupBox: Reduce GC pressure OnPaint --- VAR.Toolbox/Controls/CGroupBox.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/VAR.Toolbox/Controls/CGroupBox.cs b/VAR.Toolbox/Controls/CGroupBox.cs index 1316476..1e87f5a 100644 --- a/VAR.Toolbox/Controls/CGroupBox.cs +++ b/VAR.Toolbox/Controls/CGroupBox.cs @@ -21,9 +21,21 @@ namespace VAR.Toolbox.Controls set { this._borderColor = value; } } + private SolidBrush _brushBackColor = null; + private SolidBrush _brushForeColor = null; + protected override void OnPaint(PaintEventArgs e) { - Size tSize = TextRenderer.MeasureText(this.Text, this.Font); + if (_brushBackColor == null || _brushBackColor.Color != BackColor) + { + _brushBackColor = new SolidBrush(BackColor); + } + if (_brushForeColor == null || _brushForeColor.Color != ForeColor) + { + _brushForeColor = new SolidBrush(ForeColor); + } + + Size tSize = TextRenderer.MeasureText(Text, Font); Rectangle borderRect = e.ClipRectangle; borderRect.Y = (borderRect.Y + (tSize.Height / 2)); @@ -34,8 +46,8 @@ namespace VAR.Toolbox.Controls textRect.X = (textRect.X + 6); textRect.Width = tSize.Width; textRect.Height = tSize.Height; - e.Graphics.FillRectangle(new SolidBrush(this.BackColor), textRect); - e.Graphics.DrawString(this.Text, this.Font, new SolidBrush(this.ForeColor), textRect); + e.Graphics.FillRectangle(_brushBackColor, textRect); + e.Graphics.DrawString(Text, Font, _brushForeColor, textRect); } } }