CGroupBox: Reduce GC pressure OnPaint

This commit is contained in:
2021-12-01 07:13:57 +01:00
parent 2de11e8560
commit a3e4ca9ea1

View File

@@ -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);
}
}
}