89 lines
2.8 KiB
C#
89 lines
2.8 KiB
C#
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;
|
|
}
|
|
}
|
|
|
|
}
|
|
} |