using System; using System.Drawing; using System.Windows.Forms; using RyzStudio.Drawing; using System.ComponentModel; namespace RyzStudio.Windows.ThemedForms { public partial class TUserControl : System.Windows.Forms.UserControl { public class ThemeStyle { public int BorderWidth; public int BorderRadius; public int BorderPadding; public Color BorderColour; public Color BackColour; public Color ForeColour; public ThemeStyle(int borderWidth, int borderRadius, int borderPadding, Color borderColour, Color backColour) { this.BorderWidth = borderWidth; this.BorderRadius = borderRadius; this.BorderPadding = borderPadding; this.BorderColour = borderColour; this.BackColour = backColour; this.ForeColour = Color.Black; } public ThemeStyle(int borderWidth, int borderRadius, int borderPadding, Color borderColour, Color backColour, Color foreColour) { this.BorderWidth = borderWidth; this.BorderRadius = borderRadius; this.BorderPadding = borderPadding; this.BorderColour = borderColour; this.BackColour = backColour; this.ForeColour = foreColour; } } protected ThemeStyle styleActive = new ThemeStyle(1, 3, 2, Color.FromArgb(212, 212, 212), Color.White); public TUserControl() { InitializeComponent(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); this.BackColor = Color.Transparent; } protected override void OnPaintBackground(PaintEventArgs e) { base.OnPaintBackground(e); Graphics g = e.Graphics; //g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; //g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; //g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; //g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; updateBackground(g, styleActive); } [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] public new Padding Padding { get => base.Padding; set => base.Padding = value; } protected virtual void updateBackground(Graphics g, ThemeStyle style) { int b = (styleActive.BorderWidth + 1) + styleActive.BorderPadding; this.Padding = new Padding(b, b, (b - 1), (b - 1)); Rectangoid area = new Rectangoid(this.ClientRectangle, style.BorderRadius, style.BorderWidth); g.FillPath(new SolidBrush(style.BackColour), area.ToGraphicsPath()); g.DrawPath(new Pen(new SolidBrush(style.BorderColour), style.BorderWidth), area.ToGraphicsPath()); } protected virtual void close() { if (this.Parent == null) { return; } if (this.Parent is Form) { (this.Parent as Form).Close(); return; } if (this.Parent.GetType().IsSubclassOf(typeof(System.Windows.Forms.Form))) { System.Windows.Forms.Form parentForm = (System.Windows.Forms.Form)this.Parent; if (parentForm != null) { parentForm.Close(); } } } } }