namespace RyzStudio.Windows.ThemedForms { using System; using System.Drawing; using System.Windows.Forms; using RyzStudio.Drawing; using System.ComponentModel; public partial class UserControl : System.Windows.Forms.UserControl { //protected ThemeStyle styleActive = new ThemeStyle(1, 3, 2, Color.FromArgb(112, 112, 112), Color.White); protected ThemeStyle styleActive = new ThemeStyle(1, 3, 2, Color.FromArgb(212, 212, 212), Color.White); public UserControl() { 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 tryClose() { 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(); } } } public void SetValue(Label sender, string value) { if (sender.InvokeRequired) { sender.Invoke(new MethodInvoker(() => { sender.Text = value; })); } else { sender.Text = value; } } } }